L'ho adattata un attimo. Adesso alla funzione devi passare la tua data di partenza e ti restituisce il numero di giorni lavorativi trascorsi sino ad oggi.
Tu parlavi solo di sabati e domeniche, questa considera anche le festività "fisse" e quelle variabili come pasqua e pasquetta.
Codice PHP:
function giorniLavorativiTraDate($giorno,$mese,$anno)
{
$ts_lavorazione = mktime(0,0,0,$mese,$giorno,$anno);
$ts_oggi = mktime(0,0,0,date('m'),date('d'),date('Y'));
for ($i=2006; $i<=2037; $i++){
$pasqua = date("Y-m-d", easter_date($i));
$array_pasqua[] = $pasqua;
}
foreach($array_pasqua as $pasqua){
list ($anno,$mese,$giorno) = explode("-",$pasqua);
$pasquetta = mktime (0,0,0,date($mese),date($giorno)+1,date($anno));
$array_pasquetta[] = $pasquetta;
}
$giorniFestivi = array("01-01",
"01-06",
"04-25",
"05-01",
"06-02",
"08-15",
"11-01",
"12-08",
"12-25",
"12-26",
);
$trascorsi = 0;
while ($ts_lavorazione <= $ts_oggi)
{
$giorno_lavorazione = date("w",$ts_lavorazione); //verifico il giorno: da 0 (dom) a 6 (sab)
$mese_giorno_lavorazione = date('m-d',$ts_lavorazione); // confronto con gg sempre festivi
if ($giorno_lavorazione !=0 && $giorno_lavorazione != 6 && !in_array($mese_giorno_lavorazione,$giorniFestivi) && !in_array($ts_lavorazione,$array_pasquetta) )
{
$trascorsi++;
}
$ts_lavorazione=$ts_lavorazione+86400;
}
return $trascorsi;
}
echo giorniLavorativiTraDate(20,8,2006); // inserisco una data e mi dice quanti giorni lavorativi a
// oggi sono trascorsi. Dal 20 agosto a oggi son 9 giorni.
?>