PHP strtotime () verschiedene Ergebnisse von Montag diese Woche

8

Ich habe ein Problem, das Datum von Montag in der aktuellen Woche zu erhalten.

%Vor%

Wenn ich den obigen Code auf meinem lokalen Rechner (PHP 5.3) ausführe, gibt er korrekt '2011-03-07' aus, aber der gleiche Code auf meinem Server (PHP 5.2) gibt '2011-03-14' aus ( Das ist Montag nächste Woche).

Ich habe versucht, ein Datum ('W') auf beiden Rechnern zu laufen und erhalte das gleiche Ergebnis (10).

Bearbeiten: Irgendwelche Ideen, wie funktioniert das richtig?

Vielen Dank im Voraus.

    
Stefan O. 09.03.2011, 15:18
quelle

7 Antworten

4

Nicht dass ich genau dieses Problem gesehen habe, aber ich habe sehr ähnliche gesehen. strtotime scheint das Verhalten zwischen verschiedenen Versionen von PHP zu ändern, und abgesehen von den einfachen Operationen (z. B. "+1 Woche") ist es schwierig zu garantieren, dass die Funktionalität gleich bleibt.

Wenn du nicht in der Lage bist, auf 5.3 zu aktualisieren, was, wie es richtig herausgestellt wurde, eine Verbesserung zu sein scheint, kann ich nur mit einigen Permutationen spielen. Es ist oft möglich, die richtige Antwort aus älteren Versionen von strtotime zu bekommen, indem man die Frage umformuliert. Beispiele könnten sein ...

  • nächsten Montag -1 Woche
  • letzten Montag +1 Woche
  • diesen Montag
Jeff Parker 09.03.2011, 15:35
quelle
8

Verwenden date('Y-m-d',strtotime(date('o-\WW')));

    
woodo 22.02.2012 10:08
quelle
3

Ja, die Interpretation der Strings in strtotime hat sich in 5.3 deutlich verbessert.

    
Funkatron 09.03.2011 15:20
quelle
0

Führen Sie den Befehl "date" aus der CLI-Eingabeaufforderung auf dem Server und Ihrem lokalen Desktop aus. Dadurch wird überprüft, ob auf beiden Systemen das gleiche Datum angezeigt wird.

    
user651820 09.03.2011 15:22
quelle
0

Sie haben zwei Möglichkeiten: Entweder vermeiden Sie die Verwendung dieser Check-Funktion, wenn das Datum in der Zukunft liegt, oder wenn Sie es um 7 Tage herabstufen. Willkommen in der Welt von PHP.

    
vbence 09.03.2011 15:37
quelle
0

Schau dir das an:

"Seien Sie sich bewusst, dass Sie sich nicht auf diese Funktion verlassen können, um ein Datum zu validieren, da es wahnsinnige Daten wie den 31. Februar akzeptiert.

Auch die Funktion "... week" an sich kann nicht das tun, was Sie erwarten. Wenn an einem Sonntag verwendet, gibt "nächste Woche" keinen Zeitstempel des nächsten Montag, sondern des folgenden Montag zurück. In ähnlicher Weise wird ein Zeitstempel für den Montag der aktuellen Woche zurückgegeben, wenn "vorherige / letzte Woche" verwendet wird, und "diese Woche" gibt einen Stempel des Montag der nächsten Woche (d. H. Des folgenden Tages) zurück. Dies ist nicht der "Woche beginnt am Sonntag" -Effekt, da dies bedeuten würde, dass alle zurückgegebenen Zeitstempel an einem Sonntag sein müssten und keiner von ihnen ist. "

Ff heute ist Sonntag, Sie werden sich irren.

    
Ethan 31.03.2015 05:34
quelle
0

Hier ist eine andere Lösung, die funktioniert (eigentlich die einzige, die für mich funktionierte):

%Vor%     
Erik Kalkoken 24.01.2016 13:46
quelle

Tags und Links