Ich habe jetzt ein bisschen damit gekämpft. Ich versuche, die Epoche in ein Datumsobjekt umzuwandeln. Die Epoche wird mir in UTC zugesandt. Wann immer Sie new Date()
eine Epoche passieren , wird davon ausgegangen, dass es sich um eine lokale Epoche handelt. Ich habe versucht, ein UTC-Objekt zu erstellen und es dann setTime()
an die richtige Epoche anzupassen, aber die einzige Methode, die nützlich erscheint, ist, dass toUTCString()
Zeichenfolgen mir nicht helfen. Wenn ich diese Zeichenfolge an ein neues Datum übergebe, sollte sie feststellen, dass es sich um UTC handelt, dies ist jedoch nicht der Fall.
new Date( new Date().toUTCString() ).toLocaleString()
Mein nächster Versuch war, den Unterschied zwischen der aktuellen lokalen Epoche und der aktuellen UTC-Epoche zu ermitteln, aber das konnte ich auch nicht.
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
Es gibt mir nur sehr kleine Unterschiede, unter 1000, was in Millisekunden ist.
Irgendwelche Vorschläge?
quelle
Antworten:
Ich glaube, ich habe eine einfachere Lösung - setzen Sie das Anfangsdatum auf die Epoche und fügen Sie UTC-Einheiten hinzu. Angenommen, Sie haben eine UTC-Epoche in Sekunden gespeichert. Wie wäre es
1234567890
. So konvertieren Sie dies in ein korrektes Datum in der lokalen Zeitzone:d
ist jetzt ein Datum (in meiner Zeitzone) eingestellt aufFri Feb 13 2009 18:31:30 GMT-0500 (EST)
quelle
var d = new Date(utcSeconds * 1000)
soll das gleiche Ergebnis ergibt.var d = new Date(1234567890000)
gibt das gleiche Ergebnis zurückEs ist einfach,
new Date()
dauert nur Millisekunden, zquelle
const d = new Date(epoch * 1000)
.Und nur für die Protokolle habe ich dies mit der Moment.js- Bibliothek gemacht, die ich sowieso für die Formatierung verwendet habe.
quelle
Die Epochenzeit ist ab dem 1. Januar 1970 in Sekunden angegeben. Gibt ab dem 1. Januar 1970 Millisekunden
date.getTime()
zurück . Wenn Sie also einen Epochenzeitstempel haben, konvertieren Sie ihn durch Multiplizieren mit 1000 in einen Javascript-Zeitstempel.quelle
quelle
Um die aktuelle Epochenzeit in [ms] in eine 24-Stunden-Zeit umzuwandeln. Möglicherweise müssen Sie die Option zum Deaktivieren des 12-Stunden- Formats angeben .
oder als JS:
Hinweis: Die Verwendung von
en-GB
hier ist nur eine (zufällige) Auswahl eines Ortes im 24-Stunden-Format, es ist nicht Ihre Zeitzone!quelle
d/m/yyyy
oderm/d/yyyy
? Der richtige (logischste) Weg, dies anzuzeigen, sollte sein :yyyy-mm-dd
. Irgendwelche Abnehmer?Die Epochenzeit (dh die Unix-Epochenzeit) ist fast immer die Anzahl der Sekunden , die seit dem 1. Januar 1970 um 00:00:00 Uhr (UTC-Zeit) abgelaufen sind, nicht die Anzahl der Millisekunden, die einige der Antworten hier impliziert haben.
https://en.wikipedia.org/wiki/Unix_time
Wenn Sie einen Zeitwert für die Unix-Epoche erhalten haben, wird dieser wahrscheinlich in Sekunden angegeben und sieht ungefähr so aus
1547035195
. Wenn Sie diesen Menschen in JavaScript lesbar machen möchten, müssen Sie den Wert in Millisekunden konvertieren und diesen Wert an denDate(value)
Konstruktor übergeben, z.Sie müssen den
d.setUTCMilliseconds(0)
Schritt in der akzeptierten Antwort nicht ausführen, da der JavaScript-Date(value)
Konstruktor einen UTC- Wert in Millisekunden (keine Ortszeit) annimmt.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Syntax
Beachten Sie auch, dass Sie die Verwendung des
Date(...)
Konstruktors vermeiden sollten, der eine Datums- / Uhrzeitdarstellung für Zeichenfolgen verwendet. Dies wird nicht empfohlen (siehe den obigen Link).quelle
Möchten Sie nur eine UTC-Zeichenfolge in eine "lokale" Zeichenfolge konvertieren? Du könntest es tun:
quelle
Ergänzung zur obigen Antwort von @djechlin
konvertiert die EPOCH-Zeit in ein vom Menschen lesbares Datum. Vergessen Sie nur nicht, dass diese Art von EPOCH-Zeit eine Ganzzahl sein muss.
quelle
Die einfachste Lösung, die ich dafür gefunden habe, ist:
Beachten Sie, dass dies nicht
* 1000
am Ende dernew Date(timestamp)
Aussage steht, da dies (für mich jedenfalls!) Immer das falsche Datum anzugeben scheint, dh anstatt das Jahr 2019 als 51015 anzugeben, denken Sie daran.quelle
Wenn Sie Zeitstempel und Datumskonvertierungen von und nach UTC und Ortszeit ohne Bibliotheken wie moment.js auflösen möchten, sehen Sie sich die folgende Option an.
Bei Anwendungen, die UTC-Zeitstempel verwenden, müssen Sie möglicherweise das Datum im Browser anzeigen, wobei die lokale Zeitzone und gegebenenfalls die Sommerzeit zu berücksichtigen sind. Das Bearbeiten eines Datums, das sich in einer anderen Sommerzeit befindet, obwohl es sich in derselben Zeitzone befindet, kann schwierig sein.
Mit den folgenden
Number
undDate
Erweiterungen können Sie Datumsangaben in der Zeitzone der Zeitstempel anzeigen und abrufen. Angenommen, Sie befinden sich in Vancouver. Wenn Sie ein Datum im Juli oder Dezember bearbeiten, kann dies bedeuten, dass Sie ein Datum in PST oder PDT bearbeiten.Ich empfehle Ihnen, das Code-Snippet unten zu überprüfen, um diese Lösung zu testen.
Umrechnungen aus Millisekunden
Umrechnungen von Daten
Verwendung
Überzeugen Sie sich selbst
Code-Snippet anzeigen
quelle
BEARBEITEN
BEARBEITEN behoben
quelle
In Anbetracht dessen haben Sie zur
epoch_time
Verfügung,quelle
var myDate = new Date( your epoch date *1000);
Quelle - https://www.epochconverter.com/programming/#javascript
quelle
@ Amjad, gute Idee, aber eine bessere Implementierung wäre:
quelle
Konvertieren Sie es zuerst in String und ersetzen Sie dann den Zeitzonentext.
quelle