2017-07-04 3 views
1

Ich benutze HIGHCHART in angularjs app. ich von API Datum erhaltenDate.parse() funktioniert nicht mit highchart

var dateTime = new Date(value.date_time); // Wed Jun 07 2017 10:00:00 GMT+0200 (Central European Summer Time) 

nachdem ich unixTimeStamp

var unixTimeStamp1 = dateTime.getTime(); // 1496822400000 

Und diese Arbeit normalerweise in Google Chrome und Firefox konvertieren, wenn highchart öffnen, aber in Safari und IE nicht funktioniert. Jetzt muss ich in Millisekunden konvertieren

var unixTimeStamp = Date.parse(unixTimeStamp1); // here i get NaN 

und alle Diagramme ist leer.

Wenn ich das versuchen, statt oben

var unixTimeStamp = new Date(unixTimeStamp1*1000); // Wed May 24 49476 06:00:00 GMT+0200 (Central European Summer Time) 

diese Arbeit in alle Browser (IE, Safari, Chrome, Firefox ...) aber, das Datum in der Tabelle ist nicht korrekt. Damit ich Datum wie folgt auf das Bild unten enter image description here

ist dies das richtige Datum enter image description here

Ich entschuldige mich, wenn dies eine doppelte Frage, aber ich die richtige Antwort für mein Problem nicht finden .

+0

Was den Wert ist ' value.date_time'? –

+0

value.date_time = 2017-06-07 10:00:00 – Arter

+0

Okay, dann bekommst du nur 'time' und konvertiere dann zum Datum. Sie haben ein korrektes Datum. Aber warum musst du es mal ändern und dann auf den neuesten Stand bringen? –

Antwort

1

Sie nicht Date.parse verwenden können, um die Zeichenfolge zu analysieren und sicher sein, dass es auf jedem Browser funktioniert - siehe the description of Date.parse:

Aufgrund der Abweichungen beim Parsen von Datumsstrings, empfiehlt es sich, immer manuell zu analysieren Zeichenfolgen als Ergebnisse sind inkonsistent, insbesondere bei verschiedenen ECMAScript-Implementierungen, bei denen Zeichenfolgen wie "2015-10-12 12:00:00" als NaN, UTC oder lokale Zeitzone geparst werden können.

Wenn Sie das Datum das Format wie yyyy-mm-dd hh hat: mm: ss, können Sie es wie folgt analysieren:

const date = '2017-06-07 10:00:00' 
const d = date.match(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/) 
const parsed = new Date(d[1], d[2], d[3], d[4], d[5], d[6]).getTime() 

Beispiel: http://jsfiddle.net/zt1k31sf/

+0

danke Mann, du sparst meine Woche: D – Arter