Add date in php gibt verschiedene Ergebnisse

9

Ich muss ein Datum bekommen, das 6 Monate mit einem bestimmten Datum hinzugefügt wird. Ich habe den folgenden Code verwendet

%Vor%

welches Ergebnis als 2017-03-02 ergab
Dann änderte ich das Startdatum im Code wie folgt

%Vor%

was das Ergebnis als 2017-03-01 ergibt
Warum passiert das auf Anhieb? Ist mit meinem Code etwas nicht in Ordnung?
Mysql-Abfrage verwenden

%Vor%

gibt Ergebnis 2017-02-28
Welches ist die richtige Lösung, um das richtige Datum zu bekommen?

    
Thejas 01.09.2016, 06:44
quelle

3 Antworten

4

Dies geschieht aufgrund des Verhaltens von PHP. In diesem Fall werden 6 Monate hinzugefügt, die Februar geben (es hat 28 Tage), also fügt es drei weitere Tage hinzu, aber in MySQL fügt es nur Monate hinzu.

Um dies zu lösen, verwenden Sie last day of 6 month oder last day of sixth month anstelle von +6 months

Code

%Vor%

Code-Demo

Ausgabe

%Vor%

Eine andere Lösung

%Vor%

Code-Demo

Ausgabe

%Vor%

Siehe auch Relative Formate

    
zakhefron 01.09.2016, 07:17
quelle
0

Diese Funktion funktioniert NICHT von links nach rechts, wie man denken würde. Diese Funktion analysiert die Zeichenfolge als Ganzes und wendet dann die Intervalle nach Größe an (Jahr, Monat, ...). Nehmen Sie das folgende Beispiel:

%Vor%     
Rasa Mohamed 01.09.2016 07:32
quelle
0

Scheint wie PHP-Datum "Korrektur" unterscheidet sich von MySQL:

  • PHP korrigiert 2017-02-30 , indem ungültige Tage (29. und 30. Februar 2017) in den nächsten Monat verschoben werden
  • MySQL korrigiert 2017-02-30 , indem ungültige Tage bis zum letzten Tag des Monats geklammert werden

Hier ist eine Lösung, die helfen könnte. Es verwendet die DateTime-Klasse, aber die Konvertierung in date / strtotime ist trivial.

%Vor%     
Salman A 01.09.2016 12:39
quelle

Tags und Links