Have you tried something like this:
echo date('l jS \of F Y h:i:s A', strtotime('24th December 2012 previous weekday'));
This will output something like Friday 21st of December 2012 12:00:00 AM
using PHP 5.3.19
Heres another way you could go about this, its not the prettiest thing but it should work:
$date = '24th December 2012';
$dateN = intval(date('N', strtotime($date)));
if ($dateN === 1) {
$prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-3 days'));
} else if ($dateN === 7) {
$prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-2 day'));
} else {
$prevWeekday = date('l jS \of F Y h:i:s A', strtotime($date . '-1 day'));
}
echo $prevWeekday;