2016-04-07 6 views
0

Ich verwende eine Bibliothek, die Objekte nicht nach einem Zeichenfolgenwert sortiert, sondern nach Datum sortiert. Ich habe Monate wie '2008-04' und ich sollte in der Lage sein, sie in Javascript-Daten für den ersten des entsprechenden Monats zu konvertieren. Aber meine lokalen Zeitzone Schrauben Dinge:Monatsstring in Datum umwandeln

new Date('2008-04') 
Mon Mar 31 2008 20:00:00 GMT-0400 (EDT) 

Dies ist wahrscheinlich ein Duplikat How do you convert a JavaScript date to UTC?, aber vielleicht gibt es eine einfachere Lösung für meinen speziellen Anwendungsfall, als die dort diejenigen?

BTW, bekomme ich die gleiche Antwort von dem ersten Tag des Monats festgelegt wird:

new Date('2008-04-01') 
Mon Mar 31 2008 20:00:00 GMT-0400 (EDT) 

ich ES6 bin mit. Ich nehme an, das macht es nicht einfacher?

+0

Sie einen Blick auf einige produktionsfertige Bibliothek nehmen, wie http://momentjs.com/ - vielleicht hat es dieses Problem gelöst bereits – llamerr

+0

Ja Ich habe Moments zuvor benutzt. Es ist ziemlich groß, um ein kleines Problem zu lösen, ich bin zu faul, um in 5 Zeilen Javascript zu lösen. – Sigfried

+0

Mögliches Duplikat von [Wie konvertiert man ein JavaScript-Datum in UTC?] (Http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc) – Sigfried

Antwort

1

'-01T00:00:00Z' auf den String mit einem Teil ISO 6801 Datum hinzufügen:

document.write(new Date('2008-04' + '-01T00:00:00Z'));

+0

'neu Datum ('2008-04-01') -> Montag, 31. März 2008 20:00:00 GMT-0400 (EDT) ' – Sigfried

+0

Ihre Bearbeitung gibt noch den 31. März an. – Sigfried

+0

Sie können die Datumszeichenfolge als Stich für die Sortierung behandeln. ISO-Daten sind immer lokalisiert und abhängig von Ihrer Zeitzone erhalten Sie Daten in der Vergangenheit. Sie können aber immer noch mit diesen Daten sortieren, da der Fehler bei jedem Datum immer gleich ist. –

0

ich falsch verstanden. Das Datum ist bereits UTC, nur wenn ich es lokal als String anzeigen lasse, wird es in meine lokale Zeitzone konvertiert. Die Antwort ist also gerade

new Date('2008-04').toUTCString() 
"Tue, 01 Apr 2008 00:00:00 GMT" 

oder

new Date('2008-04').toISOString() 
"2008-04-01T00:00:00.000Z"