2016-05-25 4 views
0

Mein Code istich falsches Datum bin immer von moment.js nach der Konvertierung

console.log(moment(new Date('2016-05-24T18:50:05.000')).format('LL')); 

Es sollte 24. Mai 2016 sein, aber es gibt mir 25 Mai 2016.

Kann mir jemand helfen.

+0

Könnte dies ein Zeitzone Problem sein? Erwägen Sie die Angabe der UTC-Zeitzone. –

+0

Nein, nur für dieses Datum ist es passiert, sonst habe ich für andere überprüft, es funktioniert gut. Sie können das Beispiel in plukr [link] (https://plnkr.co/edit/e8cIXxajUmE7ggVXueTG?p=preview) einchecken – user3152849

+0

Moment nimmt an, dass die Zeit lokal ist, wenn Sie keine Zeitzone angeben Also, wenn Sie Pacific Time oder sind Bergzeit oder Zentralzeit, das würde 25. Mai in UTC bedeuten (denken Sie daran, UTC wäre mindestens 6 Stunden vor Ihnen). Probieren Sie die Zeichenfolge "2016-05-24T18: 50: 05.000Z" aus, um die UTC-Zeitzone anzugeben. –

Antwort

2

Sie müssen das Datum als UTC angeben.

Sie können in eine der folgenden Möglichkeiten, dies zu tun:

console.log(moment(new Date('2016-05-24T18:50:05.000Z')).format('LL')); 

Wo gibt der Z, dass die Zeit UTC ist. Oder:

console.log(moment.utc(new Date('2016-05-24T18:50:05.000')).format('LL')); 


Sie können ein ISO 8601 String Moment direkt übergeben.

Es ist nicht notwendig, die Zeichenfolge in ein JavaScript-Date-Objekt zu verpacken. Dann wird Ihr Code wird:

console.log(moment('2016-05-24T18:50:05.000Z').format('LL')); 

Oder:

console.log(moment.utc('2016-05-24T18:50:05.000').format('LL')); 
+0

console.log (moment.utc (neues Datum()). Format ('LL')); Es zeigt gestern Datum nicht heute warum? – user3152849

+1

new Date() erstellt ein Datum in lokaler Zeit, moment.utc() erzwingt Moment, um das Datum als UTC zu interpretieren. Format ('LL') zeigt das Datum in Ortszeit an. Verwenden Sie nur moment.utc() anstelle von moment(), wenn das Datum, das Sie als Argument übergeben, als utc interpretiert werden soll. – user2961850

+1

Warum rufen Sie "neues Datum" an? –

Verwandte Themen