Javascript: Aktuelles Datum in Millisekunden (UTC) erhalten (KEINE Verwendung von Strings)

8

Nun, Sie könnten denken, dass diese Frage bereits gestellt wurde, aber ich denke, dass es nicht so ist. Die Lösungen, die ich über alle gelesen habe, hatten diese "Puzzle" -Technik (wie getUTCMonth() + getUTCMinutes + ... ). Da ich aber nur die verstrichenen Sekunden zwischen zwei UTC (!) Daten vergleichen möchte, gilt dies nicht.

Wie Sie wissen, können Sie das aktuelle (nicht-UTC) Datum wie folgt abrufen:

%Vor%

Aber das ist NICHT was ich will. Ich hätte gerne das aktuelle Systemdatum in UTC und in Millisekunden, damit Sie sich nicht mit Strings herumschlagen müssen. AFAIK Die Variable t_millis enthält den Millisekundenwert des aktuellen Zeitstempels in GMT, nicht UTC. (Da d auch in GMT ist. Es sei denn getTime () führt eine Art implizite Zeitzonenumwandlung durch, dh das Hinzufügen des Versatzes BEVOR gibt die Millisekunden aus, aber ich habe Lesen Sie nie darüber irgendwo)

Gibt es also wirklich keinen anderen Weg als den Offset zum Zeitwert hinzuzufügen? Ich vermisse verzweifelt eine Funktion wie getUTCTimeMillis() aus anderen Sprachen.

    
syntaxerror 01.06.2012, 21:01
quelle

5 Antworten

17

Dies ist eine alte Frage, aber für neue Besucher hier ist die CORRECT Antwort:

%Vor%

Er gibt die Anzahl der Millisekunden zurück, die seit dem 1. Januar 1970 00:00:00 UTC vergangen sind.

    
advncd 06.12.2015 02:09
quelle
16

Der Millisekundenwert der Tageszeit wird unabhängig von Ihrer Zeitzone gleich sein. Das heißt, es gibt keine Zeitzonen auf dem Planeten Erde, die sich um eine Anzahl von Millisekunden größer als Null voneinander unterscheiden. (Sie können sich um eine ganze Zahl von Stunden oder sogar Minuten unterscheiden, aber nicht um Sekunden oder Millisekunden.)

Das heißt, der Wert, den Sie von getTime() erhalten, ist ein UTC-relativer Zeitstempel. Wenn zwei Webbrowser an sehr unterschiedlichen Orten auf dem Globus gleichzeitig ein Date-Objekt erstellen, erhalten sie beide den gleichen Wert von .getTime() (vorausgesetzt, die Uhren sind synchronisiert, was natürlich sehr unwahrscheinlich ist).

>

Hier: 1338585185539 Das ist ein Zeitstempel, den ich gerade von meinem Browser bekommen habe. Ich bin in Austin, TX, und jetzt ist es 4:13 Uhr nachmittags (so dass der Zeitstempel von etwas davor sein wird). Stecken Sie es in eine Date-Instanz auf Ihrem Computer und sehen Sie, was es sagt.

( edit - der Zeitstempel stammt aus dem 1. Juni 2012.)

    
Pointy 01.06.2012 21:09
quelle
6

Ich habe diese Funktion verwendet, um das Problem zu lösen.

%Vor%
  • Die getTime-Funktion gibt die Anzahl der verstrichenen Millisekunden zurück 1. Januar 1970 00:00:00 in der Client-Zeitzone.
  • getTimezoneOffset Rückgabe-Offset in Minuten zwischen Client-Zeitzone und UTC.
  • Versatz = Versatz * 60000; Diese Operation transformiert Minuten in Millisekunden.
  • Subtrahieren des Offsets erhält die Anzahl der seit 1 verstrichenen Millisekunden Januar 1970 00:00:00 UTC.
Blacknet 09.12.2015 15:23
quelle
5

Wie wäre es mit:

%Vor%     
kirpit 03.01.2013 17:12
quelle
0

Um den Zeitstempel von einem Datum in UTC zu erhalten, müssen Sie die Zeitzone und die Sommerzeit für dieses Datum berücksichtigen. Zum Beispiel könnte ein Datum im Januar oder im Juli 1 Stunde Unterschied bedeuten.

Die Option unten macht genau das.

%Vor%

Es kann wie folgt verwendet werden:

%Vor%     
Darlesson 02.08.2017 23:31
quelle

Tags und Links