2016-12-14 2 views
2

Der folgende Codeausschnitt:PHP - strtotime() return 1970

gibt mir:

01.01.1970-01: 00: 00

Was ist der richtige Weg ist "01.01.2000-11: 12: 32" in Zeit/Datum-Objekt umwandeln, um es mit dem aktuellen Zeitstempel zu vergleichen?

z.B.

if (date("d.m.Y-H:i:s") > date("d.m.Y-H:i:s", strtotime("01.01.2000-11:12:32"))) { 
    echo "future"; 
} else { 
    echo "past"; 
} 
+0

Versuchen Sie verwenden, um die Punkte zu Schrägstriche zu ändern. –

+0

@PraveenKumar so .. Punkte sind erlaubt? – 13loodH4t

+0

Nun, sie sind .. Aber das ist wegen der Lokalisierung. Nicht im linken Teil, sondern im rechten Teil. –

Antwort

1

Dies ist auf Lokalisierung zurückzuführen. Versuchen Sie ein anderes Format zu geben, wie das Format eine Menge Fragen:

echo date("d.m.Y-H:i:s", strtotime("01/01/2000 11:12:32")); 
echo date("d.m.Y-H:i:s", strtotime("01-01-2000 11:12:32")); 
  1. Sie nicht . für Datum und Monat Separator haben sollten.
  2. Sie können Datum und Uhrzeit nicht mit - trennen.

Wenn Sie die Eingabe von einer anderen Quelle erhalten, versuchen str_replace mit:

echo date("d.m.Y-H:i:s", strtotime(str_replace(array(".", "-"), array("/", " "), "01.01.2000-11:12:32"))); 

Ausgang: http://ideone.com/d19ATK

1

Versuch zu ersetzen . mit -:

echo date("d.m.Y-H:i:s", strtotime(str_replace('.', '-', "01.01.2000 11:12:32")));

Entfernen Sie auch - zwischen dem Datum und der Uhrzeit.

1

können Sie DateTime::createFromFormat

$date = DateTime::createFromFormat('d.m.Y-H:i:s', '01.01.2000-11:12:32'); 
$now = new DateTime(); 

if ($now > $date) { 
    echo "future"; 
} else { 
    echo "past"; 
}