wake-up-neo.com

PHP Konvertierung von Integer in Datum, Umkehrung der Strtotime

<?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.

12
Wasim A.

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.

35
Sabari

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
10
Krish R

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

4
Vereos

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

0
SpiderLinked