merhaba arkadaşlar
php ile iki tarih arasında kaç pazartesi var yada diğer günler kaç adet var bunu öğrenmenin kısa bir yolu var mı?
örnek
01.05.2014
30.06.2014
arasında kaç adet pazartesi bulunur
1 haftayı düşünün ve bu hafta içinde 1 pazartesi 1 salı 1 çarşamba var demeli
2 hafta olursa bu iki katı olacaktır ama 1,5 hafta olursa bu durumda 2pazartesi 2 salı 3 çarşamba 1 perşembe ..... şeklinde olacaktır sonuç. tam olarak bunu nasıl yaparız
Php Iki Tarih Arasında Günlerden Kaç Adet
5
●916
- 28-05-2014, 16:10:38
- 28-05-2014, 18:36:33
function gunler($basla,$bitir){ $basla=strtotime($basla); $bitir=strtotime($bitir); $fark = $bitir-$basla; $gun2=(floor($fark/60/60/24)-floor($fark/60/60/24)%6)/6; $birinci=date('N',$basla); $gun['1']=$gun2; $gun['2']=$gun2; $gun['3']=$gun2; $gun['4']=$gun2; $gun['5']=$gun2; $gun['6']=$gun2; $gun['7']=$gun2; for($i=$birinci;$i<=$birinci+(floor($fark/60/60/24)%6);$i++){ $gun[$i]=$gun[$i]+1; } print_r($gun); }Dener misin hocam bir çalışma yaptım kısadan test edin ben test işlemi gerçekleştirmedim. - 29-05-2014, 15:46:59çok teşekkürler ama istediğim olmadı.
gunler("01.01.2014","01.02.2014");
şeklinde denediğimde sonuç olarak
Array
(
[1] => 5
[2] => 5
[3] => 6
[4] => 6
[5] => 5
[6] => 5
[7] => 5
)
çıkıyor.
gerçek takvimde
ocak ayında
4 pazartesi
4 salı
5 çarşamba
5 perşembe
5 cuma
4 cumartesi
4 pazar var - 29-05-2014, 16:09:53
function days($s,$e) { $s = strtotime($s); $e = strtotime($e); $p = 24*60*60; for($i=$s;$i<$e;$i=$i+$p) { if(!$Days[date("l",$i)]) { $Days[date("l",$i)] = 1; } else { $Days[date("l",$i)]++; } } echo "<pre>"; print_r($Days); echo "</pre>"; }bu fonksiyonu kullanarak sayıları dizi içerisine alabilirsiniz.
Kullanımı :
days("2014-01-01","2014-02-01");Sonuç :
Array ( [Wednesday] => 5 [Thursday] => 5 [Friday] => 5 [Saturday] => 4 [Sunday] => 4 [Monday] => 4 [Tuesday] => 4 ) - 29-05-2014, 17:33:49ChuckyFun Yönteminide kullanabilirsiniz hocam kodlama mantığı daha anlaşılır fakat uzun iki tarih arasında biraz daha yavaş olucaktır.
function gunler($basla,$bitir){ $basla=strtotime($basla); $bitir=strtotime($bitir); $fark = $bitir-$basla; $gun2=(floor($fark/60/60/24)-floor($fark/60/60/24)%7)/7; $birinci=date('N',$basla); $gun['1']=$gun2; $gun['2']=$gun2; $gun['3']=$gun2; $gun['4']=$gun2; $gun['5']=$gun2; $gun['6']=$gun2; $gun['7']=$gun2; for($i=$birinci;$i<$birinci+(floor($fark/60/60/24)%7);$i++){ $gun[$i]=$gun[$i]+1; } print_r($gun); } gunler("01.01.2014","01.02.2014"); - 30-05-2014, 10:22:33verdiğiniz bilgiler için çok teşekkür ederim sevgili @Erden35 @ChuckyFun.
@Erden35 in örneğide oluyor ama tek ay içinde bulabiliyor.
20.05.2014 - 20.06.2014 dediğimizde array uzuyor ve ilk 7 günden sonra 1 1 1 şeklinde yeni elemanlar türetiyor.
@ChuckyFun verdiği örnek istediğim gibi oldu. yardımcı olan tüm arkadaşlara teşekkürler.