2013-06-28 17 views
29

Ich versuche Millisekunden auf ein Datum mit Verwendung von JavaScript zu konvertieren:new Date (Millisekunden) gibt Datum ungültig

new Date(Milliseconds); 

Konstruktor, aber wenn ich es einen Millisekunden-Wert von geben sagen 1372439683000 ungültig Datum zurückgibt. Wenn ich zu einem site that converts milliseconds to date gehe, gibt es das korrekte Datum zurück.

Irgendwelche Ideen warum?

+1

'alert (neues Datum (1372439683000));' funktioniert für mich. Was meinst du mit "ungültiges Datum" genau, welches Ergebnis bekommst du? –

+1

@Pekka 웃 Das OP erhält ein "Date" -Objekt, das zu "Invalid Date" führt. (zB probiere 'alert (new Date (" ")) aus') – apsillers

Antwort

64

Sie verwenden keine Nummer, Sie verwenden eine Zeichenfolge, die wie eine Zahl aussieht. Nach MDN, wenn Sie eine Zeichenfolge in Date passieren, erwartet er

ein Format, das von der Parse-Methode (IETF-kompatiblen RFC 2822 Zeitstempel) anerkannt.

Ein Beispiel für eine solche Zeichenfolge „December 17, 1995 03:24:00“, aber du bist in einem String übergeben, die wie „1372439683000“ sieht, die analysiert nicht in der Lage ist, werden.

Convert Milliseconds zu einer Reihe mit parseInt oder eine unäre +:

new Date(+Milliseconds); 
new Date(parseInt(Milliseconds,10)); 
+0

'neues Datum (929397621000)' gibt in Developer Tools eine korrekt formatierte Datumszeichenfolge zurück. Mon Jun 14 1999 15:00:21 GMT-0700 (PDT) 'wenn ich versuche, das Objekt zu überprüfen, zeigt es" ungültiges Datum "an. Und in dem tatsächlichen Code, in dem dies verwendet wird, wird auch ein ungültiges Datum erstellt. – Michael

+1

@Michael Dies scheint ein anderes Problem als das hier beschriebene zu sein. Machst du 'console.dir (neues Datum (929397621000))'?Wenn dies der Fall ist, ist "__proto__: Invalid Date" innerhalb dieser Instanz korrekt (oder zumindest nicht überraschend). Der Prototyp * Date * * * ist * ein ungültiges Datum; Gültige Datumsinformationen existieren für "Date" * Instanzen *, nicht für den Prototyp. – apsillers

+0

Ich gebe den Ausdruck direkt als Uhr in die Entwicklerwerkzeuge von Chrome ein. Mein Code macht im Grunde dasselbe. Da ich "neu" nenne, sollte das ein gültiges Date-Objekt erzeugen, ja? Seltsamerweise erzeugt sogar 'new Date()' ein ungültiges Datum (das der Debugger merkwürdig richtig stringieren kann), auf das ich die Elemente nicht untersuchen kann (weil es nur "Invalid Date" anzeigt), also ist es vielleicht ein Cockpit-Problem. – Michael

3

Die Date Funktion ist case-sensitive:

new Date(Milliseconds); 
1

anstelle dieser

new date(Milliseconds); 

Verwendung dieser

new Date(Milliseconds); 

Ihre Erklärung gibt Ihnen Datum nicht Fehler definiert ist

0

Ich war wegen einem anderen Grund, diesen Fehler.

Ich lese einen Schlüssel von Redis, deren Wert ein JSON ist.

client.get(someid, function(error, somevalue){});

Jetzt habe ich versucht, die Felder innerhalb somevalue zugreifen (was ein String), wie somevalue.start_time, ohne zu JSON-Objekt Parsen. Dies hat "undefined" zurückgegeben, was, wenn es an Date-Konstruktor übergeben wird, new Date(somevalue.start_time) "Ungültiges Datum" zurückgibt.

Zuerst zuerst JSON.parse(somevalue), um JSON-Objekt zu erhalten, bevor auf Felder innerhalb der JSON zugreifen, löste das Problem.

Verwandte Themen