Wieso gibt mir mein Javascript (node.js) den falschen Zeitstempel?

8

Ich habe "date" in die Konsole eingegeben ... und ich bekomme Tue Sep 20 01:01:49 PDT 2011 ... was korrekt ist.

Aber dann mache ich das in node.js, und ich bekomme die falsche Zeit.

%Vor%

Ausgabe ist: 1316505706, was eine Stunde zurückliegt.

    
TIMEX 20.09.2011, 08:07
quelle

4 Antworten

8

@KARASZI ist bezüglich der Ursache absolut korrekt: Unix-Zeitstempel sind immer UTC, es sei denn, Sie manipulieren sie. Ich würde vorschlagen, dass wenn Sie einen Unix-Zeitstempel wollen, sollten Sie es in UTC belassen und nur in die lokale Zeit konvertieren, wenn Sie dem Benutzer eine formatierte Zeit anzeigen müssen.

Der erste Vorteil besteht darin, dass alle Ihre Server gleichzeitig "sprechen" können. Wenn Sie beispielsweise Server für Amazon EC2 US East und Amazon EC2 US West bereitgestellt haben und diese eine gemeinsame Datenbank verwenden, können Sie UTC-Zeitstempel in Ihrer Datenbank und auf Ihren Servern verwenden, ohne sich jedes Mal Gedanken über Zeitzonenumwandlungen machen zu müssen. Dies ist ein guter Grund für die Verwendung von UTC-Zeitstempeln, aber möglicherweise nicht für Sie.

Der zweite Vorteil ist, dass Sie Dinge in Bezug auf die verstrichene Zeit messen können, ohne sich Gedanken über die Sommerzeit machen zu müssen (oder Zeitzonen, wenn Sie die Zeit auf einer Plattform messen, die sich bewegt!). Das kommt nicht sehr hoch, aber wenn Sie eine Situation hatten, in der etwas negative Zeit nahm, weil die lokale Zeit während der Messung um eine Stunde "zurückgefallen" war, wären Sie sehr verwirrt!

Der dritte Grund, den ich mir vorstellen kann, ist sehr gering, aber einige Performance-Geeks würden es wirklich schätzen: Sie können den rohen UTC-Zeitstempel erhalten, ohne jedes Mal ein neues Date-Objekt zuzuweisen, indem Sie die "Now" -Funktion der Date-Klasse verwenden / p> %Vor%     

mattbornski 24.01.2012 23:09
quelle
4

Der Grund ist, dass die Funktion getTime die Zeit in der UTC zurückgibt Zeitzone:

  

Der von der getTime-Methode zurückgegebene Wert ist die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC. Mit dieser Methode können Sie einem anderen Date-Objekt ein Datum und eine Uhrzeit zuweisen.

Wenn Sie den UNIX-Zeitstempel in Ihrer aktuellen Zeitzone abrufen möchten, können Sie % co_de verwenden % Methode:

%Vor%     
KARASZI István 20.01.2012 09:36
quelle
1

Beachten Sie, dass Sie diese Verwirrung vermeiden können, indem Sie ein node.js-Paket wie timezonecomplete oder timezone-js verwenden, deren Oberfläche weniger anfällig für die Manipulation von Datum und Uhrzeit ist.

    
rogierschouten 26.06.2014 16:18
quelle
-4

date in der Konsole gibt die Serverzeit zurück, während die Verwendung von JavaScript auf einer Webseite die lokale Zeit des Clients zurückgibt.

    
Derrick Tucker 20.09.2011 08:09
quelle

Tags und Links