Bonjour,
salut a tous
j'ai trouvé cette fonction dans site de php
[Code]
function getWorkingDays($startDate,$endDate,$holidays){
//The total number of days between the two dates. We compute the no. of seconds and divide it to 60*60*24
//We add one to inlude both dates in the interval.
$the_first_day_of_week = date("N",strtotime($startDate));
$the_last_day_of_week = date("N",strtotime($endDate));
for ($i=0;$i<52;$i++)
$nbrJours1[ ] = 0;
if( $the_first_day_of_week > 1 AND $the_last_day_of_week <= 7 )
$days = (strtotime($endDate) - strtotime($startDate)) / 86400 + 1;
$no_full_weeks = floor($days / 7);
$no_remaining_days = fmod($days, 7);
//It will return 1 if it's Monday,.. ,7 for Sunday
//---->The two can be equal in leap years when february has 29 days, the equal sign is added here
//In the first case the whole interval is within a week, in the second case the interval falls in two weeks.
if ($the_first_day_of_week <= $the_last_day_of_week){
if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--;
if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--;
}
else{
if ($the_first_day_of_week <= 6) $no_remaining_days--;
//In the case when the interval falls in two weeks, there will be a Sunday for sure
$no_remaining_days--;
}
//The no. of business days is: (number of weeks between the two dates) * (5 working days) + the remainder
//---->february in none leap years gave a remainder of 0 but still calculated weekends between first and last day, this is one way to fix it
$workingDays = $no_full_weeks * 5;
if ($no_remaining_days > 0 )
{
$workingDays += $no_remaining_days;
}
//We subtract the holidays
foreach($holidays as $holiday){
$time_stamp=strtotime($holiday);
//If the holiday doesn't fall in weekend
if (strtotime($startDate) <= $time_stamp && $time_stamp <= strtotime($endDate) && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7)
$workingDays--;
}
return $workingDays;
}
//Example:
$holidays=array("2006-12-25","2006-12-26","2008-01-01");
echo getWorkingDays("2008-01-01","2008-01-31",$holidays);
/Code
cette fonction va me donne 22 jours en excluant samedi et dimanche de calcul
je cherche a ameliorer cette fonction pour me donner résultat comme suit
vu que les deux dates en janvier
donc j'aurais une resultat come suit
semaine1 : 4 jours
semaine 2 : 5 jours
semaine 3 : 5 jours
semaine 4 : 5 jours
semaine 5: 4 jours
quelqu'un a une idée?
Configuration: Windows 2000
Internet Explorer 6.0