Occhio che non funziona per giorni arbitrari, ma e' limitato ai giorni rappresentabili tramite un unix timestamp. Questo timestamp oltretutto ha un range di valori differenti sotto windows e sotto unix. Sotto windows, non sono rappresentabili giorni < 1 gennaio 1970, mentre sotto unix penso siano < 1 gennaio 1900. NOn sono inoltre rappresentabili i giorni > un certo giorno del 2038 che non ricordo.

Per ovviare il problema ti consiglio questa funzione:

codice:
/*
   Calcola il giorno della settimana utilizzando l'argoritmo
   della congruenza di Zeller.

   Fonte: http://www.lysator.liu.se/faq/c-faq/c-17.html#17-28
*/

function weekday($year, $month, $day)
{
    // Algoritmo: (day + y + y/4 - y/100 + y/400 + 31m/12 ) mod 7
    // Le divisioni sono divisioni fra interi

    $a = floor((14 - $month) / 12);

    $y = $year - $a;
    $m = $month + 12 * $a - 2;
    $d = $day;

    $weekday = ($d + $y + floor($y/4) - floor($y/100) + floor($y/400) + floor((31 * $m) / 12)) % 7;

    return $weekday;
}