Gün sayısını hesaplamak ve yedi bölünmesi size iki tarih arasındaki hafta sayısını vermeyecektir. Bunun yerine, ISO hesaplamada hafta sayısı açısından düşünme her zaman iki tarih arasındaki hafta sayısına tekabül etmediğini 7 ile bölünme sonucu dönecektir.
Örneğin, sadece hesaplamak start_date = "2010-12-26"
ve end_date = "2011-01-25"
Eğer W51, 52,01,02,03,04 geçiyor olacak ve bu ISO başına 6 haftadır verilmiş, ancak eğer 7 ile fark ve Böl, 5 alırsınız.
Başlangıç tarihi ve bitiş tarihi farklı yıllara ait olduğunda sorun görünür.
Hesaplama yapmak için en iyi yolu, start_date
yılın geçen hafta numarasını almak için ve Aralık, 28 bakmalıdır olduğunu.
function weeks($ladate2,$ladate3) {
$start_week= date("W",strtotime($ladate2));
$end_week= date("W",strtotime($ladate3));
$number_of_weeks= $end_week - $start_week;
$weeks=array();
$weeks[]=$start_week;
$increment_date=$ladate2;
$i="1";
if ($number_of_weeks<0){
$start_year=date("Y",strtotime($ladate2));
$last_week_of_year= date("W",strtotime("$start_year-12-28"));
$number_of_weeks=($last_week_of_year-$start_week)+$end_week;
}
while ($i<=$number_of_weeks)
{
$increment_date=date("Y-m-d", strtotime($ladate2. " +$i week"));
$weeks[]=date("W",strtotime($increment_date));
$i=$i+1;
}
return $weeks;
}
function diff_weeks($ladate2,$ladate3) {
$weeks=weeks($ladate2,$ladate3);
$diff_weeks=count($weeks);
return $diff_weeks;
}
Best regards,
Manikam