2016-04-04 13 views
0

Beim Schreiben:PHP strtotime() nicht mit April Abkürzung (April) arbeitet

echo date('H:i:s', strtotime('Mar-29-2016')) . "<br />"; 
echo date('H:i:s', strtotime('Apr-3-2016')); 

ich erwarten würde zu bekommen:

00:00:00 
00:00:00 

Aber in Wirklichkeit erhalten:

00:00:00 
16:16:00 

Wechseln zu:

echo date('H:i:s', strtotime('March 29 2016')) . "<br />"; 
echo date('H:i:s', strtotime('April 3 2016')); 
wie erwartet

Arbeiten durch Ausgabe:

00:00:00 
00:00:00 

Was strtotime() kann ich nicht verstehen?

+1

Wie wäre es mit diesem Echodatum ('H: i: s', strtotime ('Apr-03-2016')); '? –

+0

Das Hinzufügen der führenden 0 funktioniert ebenfalls korrekt. Warum gibt strtotime() einen Zeitstempel ohne es? – Verl

+1

Sie bemerken, dass [bei Verwendung des M-D-Y-Formats] (https://eval.in/547545) korrekt funktioniert. Verwenden Sie einfach dieses Format. Die PHP-Zeit- und Datumsfunktionen neigen dazu, sich entweder um Unix-Zeitstempel oder amerikanische Formate für Daten zu drehen, z. MM-DD-YYYY - die magische Umwandlung von "jedem Format" in einen Unix-Zeitstempel hat seine Fehler, die auf StackOverflow stark dokumentiert sind, wenn Sie danach suchen. –

Antwort

1

Versuchen:

echo date('H:i:s', strtotime('Apr-03-2016')); 

Die strtotime Funktion erwartet einen String mit einem Datum im englischen Format angegeben zu werden und wird versuchen, dieses Format in einen Unix-Zeitstempel zu analysieren.

0

Es scheint Apr-3-2016 ist kein gültiges Datumsformat. Vom php docs

Month abbreviation, day and year M "-" DD "-" y "May-09-78", "Apr-17-1790" 
1

"Apr-3-2016" ist kein gültiger PHP Verbindung Datum/Zeit-String. Konvertieren Sie Ihre Zeichenfolge in etwas, das strtotime() erkennen kann. Man vergleiche beispielsweise das erste Ergebnis unter (Zeichenfolge) auf einige andere Optionen:

echo date('r', strtotime('Apr-3-2016')) . "\n"; 
echo date('r', strtotime('3-Apr-2016')) . "\n"; 
echo date('r', strtotime('2016-04-03')) . "\n"; 
echo date('r', strtotime('4/3/2016')) . "\n"; 

Sun, 03 Apr 2016 16:16:00 -0400 
Sun, 03 Apr 2016 00:00:00 -0400 
Sun, 03 Apr 2016 00:00:00 -0400 
Sun, 03 Apr 2016 00:00:00 -0400 

Um Ihre "Apr-3-2016" Format "3-Apr-2016", zum Beispiel zu konvertieren:

$date = "Apr-3-2016"; 
list($m, $d, $y) = explode("-", $date); 
$newdate = join("-", array($d, $m, $y)); 
Verwandte Themen