2016-04-08 29 views
1

Haftalık basit bir gündem oluşturmaya çalışıyorum. Basit bir döngüphp Önümüzdeki hafta seçili tarihe göre

$daterange = new DatePeriod(
    new DateTime('2016-04-08'), 
    new DateInterval('P1D'), 
    new DateTime(date('Y-m-d',strtotime ('1 week' , strtotime ('2016-04-08')))) 
); 

Sonra: mükemmel çalışıyor, ama ne gerekir başlayarak tarihleri ​​göstermektir

08 - Fri 
09 - Sat 
10 - Sun 
11 - Mon 
12 - Tue 
13 - Wed 
14 - Thu 

:

foreach ($daterange as $k => $row) { 
    echo $row->format('d') ." - " . $row->format('D') . "<br>"; 
} 

gibi bir şey üretir İşte benim kodudur Pazar veya pazartesi, haftanın ilk gününe göre. İstenen sonucu olmalıdır:

10 - Sun 
11 - Mon 
12 - Tue 
13 - Wed 
14 - Thu 
15 - Fri 
16 - Sat 

cevap

0

Genellikle işte başka bir çözüm var, vs. DateTime ve strtotime(), date(), karıştırmak için kötü olarak kabul edilir :

 
// The question is ambiguous on this, so we'll use a 
// variable to configure the preferred first weekday 
$firstWeekDay = 'Sunday'; 

$dateTime  = new DateTime(); 
// If today isn't the first week day, get the last one 
if ($dateTime->format('l') !== $firstWeekDay) 
{ 
     $dateTime->modify("last {$firstWeekDay}"); 
} 

$period = new DatePeriod(
     $dateTime, 
     new DateInterval('P1D'), 
     6 // Just tell PHP to create 6 (7 - the 1 start day) more dates 
); 
+0

"olmayan bir kuyu oluşmuş sayısal değer karşılaştı" Mükemmel. teşekkür ederim. – Alko

1

Böyle bir şey kullanabilirsiniz:

date('Y-m-d', strtotime('last Monday', '2016-04-08')); 

Sen next Monday/last Sunday/next Sunday ile last Monday yerine geçebilir, ne ihtiyaca bağlı. Bu, geçerli gün için haftanın bir önceki/sonraki ilk gününü verecektir. Daha sonra bu tarihten başlayarak 7 günlük bir aralık elde edebilirsiniz.

+0

Denedim ama alıyorum – Alko

İlgili konular