01-01-2009 den 02-23-2009 için
bu gün arasında kaç Pazar bulmak için nasıl?
Ne bu böyle bir şey:
$date = strtotime('2009-01-01 next sunday');
$dateMax = strtotime('2009-02-23');
$nbr = 0;
while ($date < $dateMax) {
var_dump(date('Y-m-d', $date));
$nbr++;
$date += 7 * 24 * 3600;
}
var_dump($nbr);
Ve sen almak çıktıya olduğunu:
string '2009-01-04' (length=10)
string '2009-01-11' (length=10)
string '2009-01-18' (length=10)
string '2009-01-25' (length=10)
string '2009-02-01' (length=10)
string '2009-02-08' (length=10)
string '2009-02-15' (length=10)
string '2009-02-22' (length=10)
Her Pazar, ve tarihleri için:
int 8
Pazar günleri sayısı için
(I've quickly checked, and it seems those dates are indeed sundays)
What this code does is :
Not: YYYY-AA-GG kullanmak için lütfen tarihlerin biçimini değiştirdi, ve GG-AA-YYY ettik; muhtemelen iyi bir fikir strtotime düzgün çalıştığından emin olmak için, bu birini kullanmak, böylece - bu genellikle kullanılan biçimidir. (not sure it'll work OK with your format)
Bu herhangi bir döngü olmadan hile yapmak gerekir.
$start = mktime(0, 0, 0, $start_month, $start_day, $start_year);
$end = mktime(0, 0, 0, $end_month, $end_day, $end_year);
$days = ($end - $start) / 86400;
$sundays = $days / 7
// check if there are enough leftover days for one more sunday
if((localtime($start)[6]+($days % 7) > 6)
$sundays++;
Bu iki tarih arasında kaç hafta hesaplayabilir, orada PHP bazı tarih işleme kütüphanesi olmalı, ve sonra pazar günleri sayısının hafta numarası olacaktır, yine ilk tarih bir Pazar olup olmadığını görmek gerekir ve son tarih tarih aralığının kenarları ile başa çıkmak için bir Pazar ya da değildir.
Bazı örnekler görülebilir here.
Yani burada bu bir yere gördüm ve benim projede kullanılmıştır. Orijinal yazı geri iz olamazdı.
// function to calculate number of given day within date range
function number_of_days($day, $start, $end){
$w = array(date('w', $start), date('w', $end));
return floor( ( date('z', $end) - date('z', $start) ) / 7) + ($day == $w[0] || $day == $w[1] || $day < ((7 + $w[1] - $w[0]) % 7));
}
// define your dates
$start = mktime(0, 0, 0, 1, 16, 2010);
$end = mktime(0, 0, 0, 1, 25, 2010);
// display the count
echo number_of_days(0, $start, $end);