senti... ho tirato fuori quest'altra roba che mi pare funzioni... vedi un po'... la commento:
Codice PHP:
$from = strtotime('09/13/2009'); // formato americano
$upto = strtotime('09/21/2009'); // formato americano
// passare le date come timestamp, estremi compresi:
function CountHolidays($from, $upto) {
// calcola i giorni della settimana degli estremi:
$weekday_from = date("N", $from); $weekday_upto = date("N", $upto);
// calcola i giorni totali:
$total_days = juliantojd(date("n", $upto), date("j", $upto), date("Y", $upto)) - juliantojd(date("n", $from), date("j", $from), date("Y", $from)) + 1;
$extra_days = 0; $extra_hol = 0;
// se parto non da lunedì...
if ($weekday_from > 1) {
// ...conteggio a parte i giorni in eccesso...
$extra_days += (8 - $weekday_from);
// ...e se parto da meno di sabato ho 2 festivi, altrimenti 1, in questi giorni
$extra_hol += (($weekday_from > 6)?(1):(2));
};
// se finisco prima di domenica
if ($weekday_upto < 7) {
// ...conteggio a parte i giorni in eccesso...
$extra_days += $weekday_upto;
// ...e se finisco prima di sabato non ho festivi, altrimenti ne ho 1, in questi giorni
$extra_hol += (($weekday_upto < 6)?(0):(1));
};
// calcolo i festivi delle settimane "intere"...
$intra_hol = (($total_days - $extra_days) / 7) * 2;
// ...e aggiungo gli "extra":
$tot_hol = $intra_hol + $extra_hol;
return ($tot_hol);
};
print CountHolidays($from, $upto);
La funzione conta i festivi considerano sabato e domenica... è facilmente adattabile per includere liste di festivi "fissi" e restituire anche i feriali e/o altre informazioni derivate.