PHP - MkTime oder Strtotime?
Frage
Ich versuche, 2010-02 in Februar 2010 umzuwandeln. Aber ich bekomme immer wieder Dezember 1969
Ich habe versucht, MKTime, Strtotime und eine Kombination aus beiden zu verwenden, aber es war immer noch nicht in der Lage, es zu tun ...
Das habe ich zuletzt versucht ...
$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
Lösung
Dies wäre ein Weg, es zu tun:
$dateString = '2010-02';
list($year, $month) = explode('-', $dateString);
$timeStamp = mktime(0, 0, 0, $month, 1, $year);
echo date('F, Y', $timestamp);
Ein anderer Weg wäre:
$dateString = '2010-02';
$timestamp = strtotime($dateString . '-01');
echo date('F, Y', $timestamp);
strtotime
Ich kann nicht mehrdeutige Daten wie "2010-02" umgehen, aber wenn Sie es zu einem vollständigen Datum machen, sollte es funktionieren.
Andernfalls möchten Sie vielleicht so etwas wie etwas untersuchen DateTime::createFromFormat
.
Andere Tipps
Versuche dies:
$str = '2010-02';
echo date('F, Y',mktime(0,0,0,substr($str,-2),1,substr($str,0,4)));
Sie müssen sicherstellen, dass Sie gültige Werte verwenden mktime()
. In Ihrem Beispiel, das Sie in die Frage bearbeitet haben, haben Sie 0
als der Tag, der effektiv am ersten Tag minus eins ist, was Sie in den Vormonat einbringt.