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&agrave;
"
;
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;
  }
?>