questo il mio contributo....
puoi estrarre le ore, il totale dei giorni e relative date, nonchè le date festive
accetta le date in formato italiano (gg-mm-aaaa) e le restiotuisce in italiano..
nel caso in cui volessi sapere, ad esempio la data di fine conoscendo il numero dei giorni e la data di partenza (esempio stima dell' apertura di un cantiere)
Codice PHP:
$my_giorni=200;
$myinizio ='12-02-2009';
// diamoci una data superiore ai giorni lavorativi giusto per starci dentro
$myfine ='12-02-2010';
$date_termine=lavorativi($myinizio,$myfine,'date');
$data_finale=$date_termine[$my_giorni];
echo $data_finale."
";
Codice PHP:
<?php
$myinizio='2-3-2008';
$myfine='2-3-2009';
$ore_lavorative = lavorativi($myinizio,$myfine,'ore');
$giorni_lavorativi = lavorativi($myinizio,$myfine,'giorni');
$date_lavorative = lavorativi($myinizio,$myfine,'date');
$feste = lavorativi($myinizio,$myfine,'festivita');
echo "le ore lavorative sono $ore_lavorative
";
echo "i giorni lavorativi sono $giorni_lavorativi
";
echo "elenco festività
";
echo "<pre>";
print_r($feste);
echo "elenco date
";
echo "<pre>";
print_r($date_lavorative);
function lavorativi($from,$to,$cosa)
{
$ore=0;
$giorni=0;
$date=array();
$festivita=array();
//giorno della settimana => ore lavorative
$lavorativi = array(1=>8,2=>8,3=>8,4=>8,5=>8,6=>4,7=>0);
$festivi=array(
"01-01",
"06-01",
"25-04",
"08-05",
"02-06",
"15-08",
"01-11",
"08-12",
"24-12",
"25-12",
"26-12",
);
list($d_start,$m_start,$y_start)=explode('-',$from);
list($d_stop,$m_stop,$y_stop)=explode('-',$to);
$start=strtotime("$y_start-$m_start-$d_start");
$stop=strtotime("$y_stop-$m_stop-$d_stop");
$day=$start;
while($day <= $stop)
{
list($day_of_week,
$ita_date,
$confronto_festivo,
$giorno_pasquale)=explode('__',date('N__d-m-Y__d-m__Y',$day));
if ( ($day_of_week != 7) && !in_array($confronto_festivo,$festivi) && $day != easter_date($giorno_pasquale) )
{
$ore+=$lavorativi[$day_of_week];
$giorni++;
$date[]=$ita_date;
}
else
{
$festivita[]=$ita_date;
}
$day+=86400;
}
return $$cosa;
}
?>