2009-09-28 12 views
6

Wie kann ich den Sonntag und Samstag der Woche für ein bestimmtes Datum erhalten?PHP: Wie bekomme ich Sonntag und Samstag eine Datumseingabe?

Zum Beispiel:

Eingang: Dienstag, 28. September 2009

Ausgabe sollte:

Sonntag, 27. September 2009 00.00 Uhr - Sonntag, 3. Oktober 2009 11.59

ich denke an mit der date, strtotime, mktime und time PHP-Funktionen.

Wenn Sie eine brauchbare Funktion haben, dann ist es auch in Ordnung mit mir.

Vielen Dank im Voraus :)

Cheers, Mark

Antwort

16

Sie verwenden strtotime() und date():

<?php 
$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
$start = strtotime('last sunday, 12pm', $time); 
$end = strtotime('next saturday, 11:59am', $time); 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
?> 

Ausgänge:

Input: Monday, September 28, 2009 
Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM 
+0

Vielen Dank für diese Sir cletus. Ich denke, das ist meiner Meinung nach viel lesbarer und einfacher zu benutzen :) – marknt15

3

einen Blick auf strtotime

heißt

strtotime('next sunday', strtotime($your_date_string)); 
0

strtotime

$input = strtotime("Monday, September 28, 2009"); 
$nextSunday = strtotime("next Sunday",$input); 
0
<?php 

$date = strtotime('Monday, September 28, 2009 - 1 day'); 
$initialString = date('l, F d, Y g:i A', $date); 
$end = date('l, F d, Y g:i A', strtotime('next saturday 11:59 pm', $date)); 

echo $initialString . ' - ' . $end; 

Ausgabe: Sonntag, 27. September 2009 00.00 Uhr - Sonntag, 3. Oktober 2009 11.59

9
<?php 

date_default_timezone_set('Europe/London'); 

$datetime = new DateTime("2009-09-23 12:00:00"); 

// Saturday 
$datetime->setISODate(2009, $datetime->format("W"), 6); 
print "Saturday:" . $datetime->format(DATE_ATOM) . "\n"; 
// Sunday 
$datetime->setISODate(2009, $datetime->format("W"), 0); 
print "Sunday: " . $datetime->format(DATE_ATOM) . "\n"; 


?> 
+0

Schön, DateTime ist relativ neu - nein? –

+0

@meder: Verfügbar ab Version 5.2, veröffentlicht Ende 2006. Es ist auf PECL für 5.1 verfügbar. – Charles

1

Echodatum ("Ymd H: i: s", strtotime ("last s unday ", Zeit()));

Echodatum ("Y-m-d H: i: s", strtotime ("nächster Samstag", Zeit()));

0

Dies ist, was Sie suchen. Es ist was ich benutze.

$beginningOfWeek = date('Y-m-d H:i:s', strtotime('last Sunday')); 
$endOfWeek = date('Y-m-d H:i:s', strtotime('+6 day', strtotime('last Sunday'))); 
0

Sie können mein Datum Zeit Helper viel handlich in diesem Fall finden, kann es in 3 Zeilen beenden

http://normandqq.github.io/Date-Time-Helper/

$date = '2013-08-11'; 
    $monday = Model_DTHpr::getMondayByDate($date); 
    $sunday = Model_DTHpr::adjustDays("add",$monday,6); 

Out Put:

2013-08-05 //Monday 
    2013-08-11 //Sunday 
1

die Frage mit der 'richtigen' Antwort ist, was ist, wenn das angegebene Datum Sonntag ist? Dann gibt es Ihnen den vorherigen Sonntag anstelle des aktuellen Sonntags. Gleiches Problem mit Samstag.

$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
if(date('D', $time) == "Sun"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('last sunday, 12pm', $time); 
} 
if(date('D', $time) == "Sat"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('next saturday, 12pm', $time); 
} 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
+0

Ich kam hierher, um nach dieser Nuance zu suchen: Meine Wochenendgrenzen waren falsch, aufgrund dessen, worauf du hingewiesen hast (und das nur beim Testen an einem Wochenende gesehen hast!). Gibt es einen Grund, warum Sie 12:00 Tagesgrenzen anstelle von Mitternacht (12:00 Uhr) verwenden? –

+0

Sieht so aus, als ob ich Teile der ursprünglichen Antwort kopiert und eingefügt habe und die erforderlichen Änderungen vorgenommen habe. Ansonsten kann ich mir im Moment keine andere Argumentation vorstellen. –

0

Get Sonntag Php-Code:

echo "Today Is : " . date("d-m-Y"); 
$dw = date("w"); 
$dw = 7-$dw; 
echo "\nNext Sunday Is" .date('d-m-Y', strtotime("+$dw days")); 
Verwandte Themen