2016-04-28 8 views
1

In meiner Anwendung wurde ein Fehler gemeldet, bei dem ich die Funktion strtotime für das von der DB zurückgegebene mysql-Datum verwendete. Es hat alles gut geklappt bis heute, als ein Fehler auftrat.Warum ergibt sich strtotime ('2016-01-01') zum 1.1.2015?

Wenn ich laufen:

date('j.n.o', strtotime('2016-01-01')) 

I Ergebnis "1.1.2015" aus irgendeinem Grund erhalten.

Aber wenn ich

date('j.n.o', strtotime('2016-02-01')) 

laufen bekomme ich „2016.01.02“, was richtig ist, aber ich habe keine Ahnung, warum das erste Beispiel ist fehlgeschlagen.

Ich könnte leicht eine Abhilfe schaffen, um dies richtig funktionieren zu lassen, aber ich frage mich insbesondere, warum diese Funktion so seltsame Ergebnisse mit dieser Eingabe zurückgibt? Ich habe mit PHP geprüft 5.3 und 7.0 und ich gleichen Ergebnisse

+6

o == ISO-8601 Jahresnummer. Dieser Wert hat den gleichen Wert wie Y, außer dass die ISO-Wochennummer (W) zum vorherigen oder nächsten Jahr gehört und stattdessen dieses Jahr verwendet wird. (hinzugefügt in PHP 5.1.0) Quelle: [PHP Handbuch] (http://php.net/manual/en/function.date.php) – Naruto

Antwort

4

Try Y statt o für das Jahr

echo date('j.n.Y', strtotime('2016-01-01')); 

http://php.net/manual/en/function.date.php

o --- ISO-8601 Jahre Nummer mit . Dieser Wert hat den gleichen Wert wie Y, außer dass die ISO-Wochennummer (W) zum vorherigen oder nächsten Jahr gehört und stattdessen dieses Jahr verwendet wird. (Hinzugefügt in PHP 5.1.0)

vs

Y --- Eine vollständige numerische Darstellung eines Jahres, 4-stellig

+0

das hat es getan. Ich war mir sicher, dass das Problem das Problem war. Vielen Dank! –

0

Versuchen Sie folgendes:

PHP enthält eingebaute Datumsfunktionen zum Formatieren eines gegebenen Datums oder einer bestimmten Uhrzeit. Dies sind

date() date_format()

Diese Funktion akzeptiert zwei optionale Argumente. d.h. Format und Zeitstempel. Der Code zeigt ein Beispiel für die Funktion PHP date().

/gibt das Datum für den Zeitstempel im Format TT/MM/JJJJ zurück Echodatum ("d-m-Y", time());