2 Stimmen

Konvertierung eines Strings, der Millisekunden darstellt, in ein Datum

Ich versuche, einen String umzuwandeln, der ein Datum in einem Millisekundenformat wie folgt darstellt:

var start = new Date(s);

Es scheint jedoch nicht zu funktionieren, weil ich beim Versuch, das Datum anzuzeigen, die Fehlermeldung "Ungültiges Datum" erhalte.

Was ich gerne hätte, ist ein Datum in diesem Format:

Mi Mai 07 2014 09:00:00

Ist es möglich, das zu tun?

Bearbeiten: Der ursprüngliche Wert der Variable s ist ein String, der aus 13 Zahlen besteht (zum Beispiel: 13982762900000)

6voto

netdigger Punkte 3570

Wandeln Sie es in einen numerischen Typ um anstelle von einem String:

var date = new Date(parseInt(s, 10))

Erklärung:

Der Input für den new Date() Konstruktor ist ein String. Dies bedeutet, dass new Date() davon ausgehen wird, dass der Input ein "ein ISO8601 String" ist, anstatt eines "Integer-Wertes, der die Anzahl der Millisekunden repräsentiert", wie unten beschrieben.

Gemäß https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date sollte es eine Ganzzahl sein, wenn der Wert als "die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC (Unix Epoch) repräsentierend" interpretiert werden soll.

new Date()

hat die folgenden Konstruktoren (gemäß dem obigen Link):

new Date();
new Date(value);
new Date(dateString);
new Date(year, month, day, hour, minute, second, millisecond);

value (dies ist der Konstruktor, der verwendet wird, wenn Sie ihn in einen ganzzahligen Wert umwandeln)

Ganzzahliger Wert, der die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC (Unix Epoch) repräsentiert.

dateString (das war der Konstruktor, der zuvor aufgerufen wurde)

Zeichenfolgenwert, der ein Datum repräsentiert. Die Zeichenfolge sollte in einem Format erkannt werden, das von der Date.parse() Methode erkannt wird (IETF-konforme RFC 2822 Zeitstempel und auch eine Version von ISO8601).

3voto

Catalin MUNTEANU Punkte 5568
var date = new Date(parseInt(your_timestamp, 10));

Ein Zeitstempel sollte 13 Ziffern haben.

Ihr Beispielzeitstempel hat 14 Ziffern. Ist das ein Fehler oder ist der Zeitstempel tatsächlich falsch?

Sie könnten:

var date = new Date(parseInt(your_timestamp, 10) / 10);

3voto

R3tep Punkte 12015

Transformiere deinen String in eine Zahl mit parseInt und es funktioniert:

var start = new Date(parseInt(s, 10));

Live-Demo


Referenz

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X