2015-04-29 5 views
6

Ich verwende das pikaday Date Picker Plugin (über eine angular directive und mit momentjs) und den Wert an den Server senden. obwohl Umstellung auf json scheint einen Tag zu verlieren:"getDate(). ToJSON()" verliert einen Tag

var d = myPikaObject.getDate(); 
console.log(d);    // Thu Apr 30 2015 00:00:00 GMT+0200 (SAST) 
console.log(d.toJSON());  // 2015-04-29T22:00:00.000Z 

Ich denke, das ein momentjs Problem ist, aber ich habe keine Ahnung, was falsch gehen wird.

+3

Es verliert keinen Tag überhaupt. Sehen Sie, dass GMT + 0200? Was wäre das Datum, wenn du 2 Stunden wegnimmst? –

+0

Ich denke, Sie können verwirrend sein, um eine andere Zeitzone zu verwenden, als einen Tag zu verlieren. Ich hatte das aufgrund von Unterschieden in den Browser- und Server-Zeitzonen. – DrCord

+0

Verlust eines Tages = Stundenunterschied aufgrund von Zeitzonen lol. – user3632710

Antwort

3

Geben Sie erhalten Sie bereits Zeit mit moments, können Sie versuchen moment.utc() Methode. Die docs sagen:

Ab Version 2.0.0, ein locale Schlüssel kann als dritter Parameter zu Moment übergeben werden() und moment.utc()

moment('2012 juillet', 'YYYY MMM', 'fr'); 
moment('2012 July', 'YYYY MMM', 'en'); 

Sie tun können viel mehr mit der utc() Methode.

moment.utc(); 
moment.utc(Number); 
moment.utc(Number[]); 
moment.utc(String); 
moment.utc(String, String); 
moment.utc(String, String[]); 
moment.utc(String, String, String); 
moment.utc(Moment); 
moment.utc(Date); 
+0

Danke, ich benutze 'moment (d) .format (" YYYY-MM-DD ")' (wobei d die Variable in der obigen Frage ist). – jcuenod

+0

Gerne helfen! Magst du auch Upvote sein, da dies geholfen hat? :) – ilter

5

Es geht nur um das Format Ihres Datums.

Wenn Sie den Druck d juste, haben Sie dies:

Thu Apr 30 2015 00:00:00 GMT+0200 (SAST) 

Es ist GMT + 2, so dass, wenn Sie d.ToJson print() Sie 2 Stunden verloren. Sie sind also der Tag vor um 22 Uhr

+0

Okay, ich bekomme das Problem. Vielen Dank! Wie bekomme ich das richtige Datum? – jcuenod

+1

Speichern Sie auch die Zeitzone. Berücksichtigen Sie bei der späteren Analyse die Zeitzone. Oder verwenden Sie '.toJSON()' nicht, verwenden Sie stattdessen '.toString()'. –

+1

* "Wie bekomme ich das richtige Datum?" * Speichern Sie das Datum/die Uhrzeit immer in UTC. Konvertieren Sie nur zur lokalen Zeit für Anzeigezwecke. –