Posts

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'),
 );
}