<?php
echo strtotime("2014-01-01 00:00:01")."<hr>";
// output is 1388516401
?>
Ich bin überrascht, wenn es umgekehrt werden kann. Ich meine, ich convert 1388516401 to 2014-01-01 00:00:01
. Was ich eigentlich wissen möchte, ist die Logik hinter dieser Konvertierung. Wie PHP das Datum in eine bestimmte Ganzzahl konvertiert.
Ja, du kannst es zurück konvertieren. Du kannst es versuchen:
date("Y-m-d H:i:s", 1388516401);
Die Logik hinter dieser Konvertierung vom Datum in eine Ganzzahl wird in strtotime in PHP erklärt:
Die Funktion erwartet eine Zeichenfolge, die ein englisches Datumsformat enthält, und versucht, dieses Format in einen Unix-Zeitstempel (die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC) zu analysieren, relativ zu dem jetzt angegebenen Zeitstempel oder Die aktuelle Uhrzeit wird jetzt nicht geliefert.
Zum Beispiel erhalten Sie mit strtotime("1970-01-01 00:00:00")
0 und mit strtotime("1970-01-01 00:00:01")
1.
Dies bedeutet, dass beim Drucken von strtotime("2014-01-01 00:00:01")
, was eine Ausgabe 1388516401
ergibt, das Datum 2014-01-01 00:00:01
1.388.516,401 Sekunden nach dem 1. Januar 1970 00:00:00 UTC liegt.
Kannst du das versuchen,
echo date("Y-m-d H:i:s", 1388516401);
Wie von theGame bemerkt,
Dies bedeutet, dass Sie einen String-Wert für die Uhrzeit und optional einen Wert für die aktuelle Uhrzeit übergeben, der ein UNIX-Zeitstempel ist. Der zurückgegebene Wert ist eine Ganzzahl, die ein UNIX-Zeitstempel ist.
echo strtotime("2014-01-01 00:00:01");
Dieser Wert wird auf den Wert 1388516401 zurückgesetzt, der UNIX-Zeitstempel für das Datum 2014-01-01. Dies kann mit der Funktion date () wie folgt bestätigt werden:
echo date('Y-m-d', 1198148400); // echos 2014-01-01
Ich denke, Sie fragen sich, warum 1388516401 gleich 2014-01-01 ist ...?
Dafür gibt es einen historischen Grund. Es gibt eine 32-Bit-Integer-Variable mit dem Namen time_t
, die die Anzahl der seit 1970-01-01 00:00:00 verstrichenen Zeit speichert. Sein Wert drückt die Zeit in Sekunden aus. Dies bedeutet, dass in 2014-01-01 00:00:01time_t
gleich 1388516401 ist.
Dies führt uns sicherlich zu einer weiteren interessanten Tatsache ... In 2038-01-19 03:14:07time_t
wird 2147485547 der maximale Wert für eine 32-Bit-Zahl erreicht. Schon mal von John Titor und dem Jahr 2038 Problem gehört ? : D
Die Funktion time () zeigt die Sekunden zwischen jetzt und der Unix-Epoche 01 01 1970 (00:00:00 GMT) an. Das strtotime () wandelt ein normales Datumsformat in ein time () -Format um. Die Darstellung dieses Datums in Sekunden lautet also: 1388516401
Quelle: http://www.php.net/time