Php İle Haftanın Günlerini Bulmak
Merhaba arkadaşlar. Bugün, bulunduğumuz hafta dahil olmak üzere 5 haftanın günlerini tek tek bulmam gerekti. Yazdığım kodları dilediğiniz gibi kullanarak istediğiniz günleri elde edebilirsiniz. Mantığını basittir. DateTime classını bilmeniz yeterlidir.
Sadece hafta içlerini bir dizide toplamaktayım. Bunu $lastDay değişkeni cuma olarak ayarladıktan sonra döngünün başında 3 gün sonraya güncelliyorum. Böylece pazartesiyi bulmuş oluyorum ve her günü ayrı ayrı diziye giriyorum.
// Bugünü oluşturuyoruz $today = new DateTime(); // Bulunduğumuz haftanın başını buluyoruz. $monday = clone $today; $monday = $monday->modify(('Sunday' == $monday->format('l')) ? 'Monday last week' : 'Monday this week'); // Oluşturacağım döngüdeki $lastDay değişkenini bör önceki haftanın cuması olarak ayarlıyorum. Böylece pazartesiye güncelleyebileceğim. $lastDay = clone $monday; $lastDay = $lastDay ->modify('-3 day'); // 5 haftayı belirten dizimizi oluşturuyoruz. $dates = array( "week1" => array(), "week2" => array(), "week3" => array(), "week4" => array(), "week5" => array() ); // Döngümüzü başlatıyoruz. Burada $dates dizimizi foreach içerisine sokuyoruz. foreach ($dates as $key => $date) { // $lastDay değişkenini kullanarak haftanın ilk gününü buluyoruz. $firstDay = clone $lastDay; $firstDay = $firstDay->modify('+3 day'); // Bundan sonra her günü bir artırarak geri kalan 4 günü buluyoruz. $secondDay = clone $firstDay; $secondDay = $secondDay->modify('+1 day'); $thirdDay = clone $secondDay; $thirdDay = $thirdDay->modify('+1 day'); $forthDay = clone $thirdDay; $forthDay = $forthDay->modify('+1 day'); $fifthDay = clone $forthDay; $fifthDay = $fifthDay->modify('+1 day'); // $lastDay değişkenini 5. gün yani cuma olarak ayarlıyoruz. Bu şekilde döngünün başında pazartesiyi bulabileceğiz. $lastDay = clone $fifthDay; // $date dizisinde ilgili haftaya günleri ekliyorum. Burada ben farklı indexler kullandım. İstediğiniz gibi düzenleyebilirsiniz. $dates[$key] = array( $firstDay->format('M d D') => $firstDay->format('Y-m-d'), $secondDay->format('M d D') => $secondDay->format('Y-m-d'), $thirdDay->format('M d D') => $thirdDay->format('Y-m-d'), $forthDay->format('M d D') => $forthDay->format('Y-m-d'), $fifthDay->format('M d D') => $fifthDay->format('Y-m-d'), ); }