2014-02-08 6 views
16

Wie kann ich letzte Woche 'Datumsbereich in PHP bekommen?Wie kann ich letzte Woche 'Datumsbereich in PHP bekommen?

sehen meine Codes unten:

<?php 
    function get_last_week_dates(){ 
     // how can i get the date range last week ? 
     // ex: today is 2014-2-8 
     // the week date range of last week should be '2014-1-26 ~ 2014-2-1' 
    } 
?> 
+2

Wo ist Ihre Codes produzieren? Nur Funktionsdefinition, lol. –

+0

Doppelte Post http://stackoverflow.com/questions/10798228/php-date-function-seven-days-previous –

+0

http://stackoverflow.com/questions/5552862/finding-date-range-for-current-week -month-and-year – arma

Antwort

59

Sie können strtotime()

$previous_week = strtotime("-1 week +1 day"); 

$start_week = strtotime("last sunday midnight",$previous_week); 
$end_week = strtotime("next saturday",$start_week); 

$start_week = date("Y-m-d",$start_week); 
$end_week = date("Y-m-d",$end_week); 

echo $start_week.' '.$end_week ; 

UPDATE

den Code geändert Sonntag zu behandeln. Wenn der aktuelle Tag Sonntag ist, dann - 1 Woche ist der vorherige Sonntag und wieder der vorherige Sonntag, für den die eine Woche zurückgeht.

$previous_week = strtotime("-1 week +1 day"); 

Außerdem, wenn wir die current week und next week Datum Bereich finden benötigen, können wir als

Aktuelle Woche tun -

$d = strtotime("today"); 
$start_week = strtotime("last sunday midnight",$d); 
$end_week = strtotime("next saturday",$d); 
$start = date("Y-m-d",$start_week); 
$end = date("Y-m-d",$end_week); 

Nächste Woche -

$d = strtotime("+1 week -1 day"); 
$start_week = strtotime("last sunday midnight",$d); 
$end_week = strtotime("next saturday",$d); 
$start = date("Y-m-d",$start_week); 
$end = date("Y-m-d",$end_week); 
+0

Warum haben Sie '+1 Tag' hinzugefügt? – Sisir

+2

Sag heute ist Sonntag, also wenn du "-1 Woche" machst, dann wird es "voriger Sonntag", also wenn du 'letzten Sonntag Mitternacht' machst, dann wird es zu einem anderen' vorherigen Sonntag' zurückgehen und '+1 hinzufügen Tag, so dass, wenn heute Sonntag ist, ich Montag bekommen werde und an diesem Datum, wenn ich 'letzten Sonntag Mitternacht' mache, dann habe ich genau das Anfangsdatum von letzter Woche Sonntag bis nächsten Samstag –

+0

Problem besteht immer noch, wenn Sie laufen dieser Code am Samstag. –

0

Sie auf diese Weise tun können.

Holen Sie sich zuerst den aktuellen Zeitstempel und subtrahieren Sie die Anzahl der Tage, die Sie wollen.

$curTime = time(); 
echo date("Y-m-d",$curTime); 
echo "<br />"; 
echo date("Y-m-d",($curTime-(60*60*24*7))); 
+0

Dies funktioniert möglicherweise nicht immer: Das Berechnen von Diffs auf diese Weise kann sich unerwartet beim Starten oder Beenden von DST auswirken. – Qualcuno

2

Sie müssen Sie verwenden strtotime Funktion für diesen

<center> 
<?php 
function get_last_week_dates() 
{ 
     // how can i get the date range last week ? 
     // ex: today is 2014-2-8 
     // the week date range of last week should be '2014-1-26 ~ 2014-2-1' 

     $startdate = "last monday"; 
     if (date('N') !== '1') 
     { 
      // it's not Monday today 
      $startdate .= " last week"; 
     } 
     echo "<br />"; 
     $day = strtotime($startdate); 
     echo date('r', $day); 
     echo "<br />"; 
     $sunday = strtotime('next monday', $day) - 1; 
     echo date('r', $sunday); 
    } 
    get_last_week_dates(); 
?> 
</center> 
2

Gut nur für den Spaß zu versuchen, dieses Problem zu lösen:

date_default_timezone_set('UTC'); 
$firstDayOfLastWeek = mktime(0,0,0,date("m"),date("d")-date("w")-7); 
$lastDayOfLastWeek = mktime(0,0,0,date("m"),date("d")-date("w")-1); 
echo("Last week began on: ".date("d.m.Y",$firstDayOfLastWeek)); 
echo("<br>"); 
echo("Last week ended on: ".date("d.m.Y",$lastDayOfLastWeek)); 
1

Dies sollte den Trick

$startWeek = date('Y-m-d',strtotime("Sunday Last Week")); 
$endWeek = date('Y-m-d',strtotime("Sunday This Week")); 

dies nicht, wenn ran an einem Montag arbeiten würde. Es würde letzten Sonntag (am Vortag) zum nächsten Sonntag kommen. Also mit Abhik Chakraborty Methode mit dem oben:

$startTime = strtotime("last sunday midnight",$previous_week); 
$endTime = strtotime("next sunday midnight",$startTime); 
$startDate = date('Y-m-d 00:00:00',$startTime); 
$endDate = date('Y-m-d 23:59:59',$endTime); 

Dies wird nun geben

start = 2014-08-10 00:00:00 
endDate = 2014-08-17 23:59:59 
12

einfach

date("m/d/Y", strtotime("last week monday")); 
date("m/d/Y", strtotime("last week sunday")); 

verwenden Sie gibt das Datum der letzten Woche Montag und Sonntag.

+2

Ich finde diese Antwort die sauberste und einfachste von allen. Aber, seine -1 im Moment. –

0
$lastWeekStartTime = strtotime("last sunday",strtotime("-1 week")); 
$lastWeekEndTime = strtotime("this sunday",strtotime("-1 week")); 
$lastWeekStart = date("Y-m-d",$lastWeekStartTime); 
$lastWeekEnd = date("Y-m-d",$lastWeekEndTime); 
0

Um das Startdatum und das Enddatum der letzten Woche zu finden, können Sie diesen Code nachverfolgen, um es zu tun.

Es arbeitet in allen Intervallen, um das Datumsintervall zu finden.

$Current = Date('N'); 
$DaysToSunday = 7 - $Current; 
$DaysFromMonday = $Current - 1; 
$Sunday = Date('d/m/y', strtotime("+ {$DaysToSunday} Days")); 
$Monday = Date('d/m/y', strtotime("- {$DaysFromMonday} Days")); 

Wenn ja müssen Sie es mit der datatime() Sie können diese Funktion ausführen ändern.

$date = new DateTime(); 
$weekday = $date->format('w'); 
$diff = 7 + ($weekday == 0 ? 6 : $weekday - 1); // Monday=0, Sunday=6 
$date->modify("-$diff day"); 
echo $date->format('Y-m-d') . ' - '; 
$date->modify('+6 day'); 
echo $date->format('Y-m-d'); 

Verwendung von Funktionen:

Wenn Sie die letzte Woche Bereich mit Hilfe der Funktionen finden Sie wie diese Vorform kann.

Funktion:

// returns last week's range 
function last_week_range($date) { 
$ts = strtotime("$date - 7 days"); 
$start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts); 
return array(
     date('Y-m-d', $start), 
     date('Y-m-d', strtotime('next saturday', $start)) 
); 
} 

Verbrauch:

$today=date(); 
print_r(last_week_range($today)); 

Alle oben genannten Funktionen, die in der letzten Woche Bereich unabhängig von der Starttag der Woche wird wieder gegeben wurde ..

0

Ich weiß, das ist alt, aber hier ist eine viel prägnantere Art, es zu tun:

$startDate = date("m/d/y", strtotime(date("w") ? "2 sundays ago" : "last sunday")); 
$endDate = date("m/d/y", strtotime("last saturday")); 
echo $startDate . " - " . $endDate 
0

Dieser wird das richtige Ergebnis und übernimmt die Montagsausgabe

<?php 
$monday = strtotime("last monday"); 
$monday = date('W', $monday)==date('W') ? $monday-7*86400 : $monday; 

$sunday = strtotime(date("Y-m-d",$monday)." +6 days"); 
$this_week_sd = date("Y-m-d",$monday); 
$this_week_ed = date("Y-m-d",$sunday); 

echo "Last week range from $this_week_sd to $this_week_ed "; 
?> 
Verwandte Themen