2009-02-17 24 views
32

I Eine Zeichenfolge, die einem Datum entspricht, dargestellt als Anzahl der Millisekunden seit der Unix-Epoche.php: Millisekunden nach Datum konvertieren

Ich versuche, es in d-m-Y auszugeben.

Die Saite, die ich bekam, war „1227643821310“, und ich sagte mir, dass das Ergebnis 2008.02.12 gleich sein sollte, aber ich halte ein Ergebnis von 25-11-2008

bekommen

Mein Code ist wie folgt:

$mil = 1227643821310; 
$seconds = $mil/1000; 
echo date("d-m-Y", $seconds); 

Irgendwelche Ideen, warum dies sein könnte?

Antwort

34

Sie tun es bereits richtig, 1227643821 ist einfach nicht 02-12-2008, es ist in der Tat 25-11-2008.

+0

Einverstanden. Siehe hier für die Sicherheit: http://www.onlineconversion.com/unix_time.htm – ryeguy

+0

Sie sind in der Tat richtig - es stellt sich heraus, die Quelle, die ich gegeben wurde, war falsch. –

+0

Echodatum ("d-m-Y", ($ mil/1000)); '- Irgendein Grund, nicht nur etwas Code zu speichern und alles auf einmal zu machen? Immer auf der Suche nach Möglichkeiten, Speicher zu sparen und unnötige Speicher/Variablen/Zeilen zu reduzieren. – Wes

1

Das einzige, was mir einfällt, ist, den Dezimalteil abzurunden, bevor Sie ihn in ein Datum umwandeln. Wenn sich das Ergebnis nicht ändert, ist das Ergebnis korrekt.

+0

Bereits ausprobiert, es ergibt sich das gleiche. –

1

Jeff, die wichtige Sache zu verstehen, wenn sie mit Zeitstempel zu tun: sie Zeit darstellen, die von 0.00.00 01.01.1970 in GMT bestanden haben, nicht in Ihrer Zeitzone (es sei denn, Sie youself in GMT, natürlich sind).

1227643821 stellt tatsächlich die GMT-Zeit von 20:10:21 25.11.2008.

Dies ist der 25. November 2008 in den meisten Teilen der Welt, aber in den Zeitzonen östlich von Moskau (und in der Moskauer Zeitzone selbst im Sommer wegen der Sommerzeit) ist es bereits der 26. November. Da die "extremste" Ost-Zeitzone GMT + 14 ist, gibt es keinen Ort auf der Welt, wo der Zeitstempel von 1227643821 ein Datum später als das 26. darstellen kann.

Der Autor des ursprünglichen Wertes mag sich im Umgang mit Zeitzonen irgendwie irren. Oder einfach falsch. Wenn Sie beispielsweise den Wert berechnen, werden in einem Schritt Sekunden anstelle von Millisekunden hinzugefügt.

+1

Ilya, es ist wahr, dass Unix-Zeitstempel (POSTIX-Zeit) die Zeit ist, die seit der Epoche in GMT verstrichen ist, wenn Sie jedoch PHPs [date()] (http://php.net/manual/en /function.date.php) Funktion, konvertiert es dieses Datum in die lokale Zeit Ihres Servers gleichwertig. Um das Datum in GMT-Zeit zu erhalten, müssen Sie die PHP-Funktion [gmdate()] (http://www.php.net/manual/en/function.gmdate.php) verwenden. –

10

I H gerade hinzugefügt: i: s wie im folgenden Beispiel:

$mil = 1227643821310; 
$seconds = $mil/1000; 
echo date("d/m/Y H:i:s", $seconds); 
Verwandte Themen