2016-04-08 16 views
1

Ich versuche, eine einfache wöchentliche Agenda zu erstellen. Hier ist mein Code:php vorherige nächste Woche basierend auf ausgewählten Datum

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

Dann wird eine einfache Schleife:

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

Produziert etwas wie:

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

, die perfekt funktioniert gut, aber was ich brauche, ist Daten anzuzeigen, aus starten Sonntag oder Montag, basierend auf dem ersten Tag der Woche. Das gewünschte Ergebnis sollte sein:

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

Antwort

0

Es wird allgemein als schlecht DateTime und strtotime(), date() usw. zu mischen, so ist hier eine andere Lösung:

 
// 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

Perfekt. Danke. – Alko

1

Sie so etwas wie dies nutzen könnten:

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

Sie last Monday mit next Monday/last Sunday/next Sunday ersetzen kann, je nachdem, was Sie brauchen. Dadurch erhalten Sie den vorherigen/nächsten ersten Tag der Woche für den aktuellen Tag. Sie können dann ein 7-Tage-Intervall ab diesem Datum erhalten.

+0

ich versucht, aber ich bin immer „Ein nicht gut gebildet numerischen Wert angetroffen“ – Alko

Verwandte Themen