Tippte ich "date" in der Konsole...und ich bekomme Tue Sep 20 01:01:49 PDT 2011
...das ist richtig.
Aber dann Mach ich das in node.js und ich bekomme die falsche Zeit.
var ts = String(Math.round(new Date().getTime() / 1000));
Ausgabe: 1316505706, die eine Stunde hinter sich.
@KARASZI ist absolut richtig, über die Ursache: Unix timestamps sind immer UTC, es sei denn, Sie manipulieren. Ich würde vorschlagen, dass, wenn Sie einen Unix-timestamp sollten Sie lassen Sie es in UTC und nur konvertieren, um die lokale Zeit, wenn Sie benötigen eine formatierte Zeit zu der Nutzer.
Der erste Vorteil dabei ist, dass alle Server können "sprechen" die gleiche Zeit. Zum Beispiel, wenn Sie bereitgestellt haben-Servern zu Amazon EC2 US East-und Amazon EC2-USA West, und Sie teilen sich eine gemeinsame Datenbank, die Sie verwenden können, UTC-Zeitstempel in der Datenbank auf Ihrem Server, ohne sich Gedanken über timezone Konvertierungen zu jeder Zeit. Dies ist ein großer Grund für die Verwendung von UTC timestamps, aber es möglicherweise nicht für Sie gelten.
Der zweite Vorteil ist, dass Sie Messen können, die Dinge in Bezug auf die verstrichene Zeit, ohne sich sorgen über die Sommerzeit (oder Zeitzonen, die entweder, im Fall du bist, die Zeit zu Messen, die auf einer Plattform, die sich bewegen!). Dies kommt nicht sehr viel, aber wenn Sie hatte eine situation, wo etwas dauerte negative Zeit, da die lokale Zeit "zurück" eine Stunde, während Sie Messen, würden Sie sehr verwirrt!
Der Dritte Grund, warum ich denken kann, ist sehr gering, aber einige der performance-Freaks würde es wirklich schätzen: Sie können die raw-UTC-Zeitstempel ohne Zuteilung eines neuen Date-Objekts jedes mal, mithilfe der Date-Klasse ist "jetzt" - Funktion.
Der Grund dafür ist, dass die
getTime
Funktion gibt die Zeit in die UTC-Zeitzone:Wenn Sie möchten, Holen den UNIX-timestamp in der Sie die aktuelle Zeitzone, können Sie die
getTimezoneOffset
Methode:Hinweis: dies können Sie vermeiden Verwirrung, indem Sie mit einem node.js Paket wie timezonecomplete oder timezone-js, die haben eine Schnittstelle, die viel weniger Fehler-anfällig für Datums-und Zeit-manipulation.
date
in die Konsole zurück, die die server-Zeit, in der Erwägung, dass mit JavaScript auf einer Webseite zurückkehren wird der client die lokale Zeit.