2015-04-29 13 views
6

Sto utilizzando il plug-in data source pikaday (tramite un angular directive e con momentjs) e l'invio del valore al server. Conversione in JSON sembra perdere un giorno, però:"getDate(). ToJSON()" perde un giorno

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 

credo che questo sia un problema momentjs ma non ho idea di quello che sta andando male.

+3

Non sta perdendo un giorno. vedi che GMT + 0200? quale sarebbe la data se hai tolto 2 ore? –

+0

Penso che potresti essere confuso cambiando per utilizzare un fuso orario diverso da perdere un giorno. Mi è successo questo a causa delle differenze nei fusi orari del browser e del server. – DrCord

+0

perdere un giorno = differenza di ora a causa del fuso orario lol. – user3632710

risposta

3

Dando che stai già ricevendo il tempo con momentjs, puoi provare il metodo moment.utc(). La documentazione dicono:

A partire dalla versione 2.0.0, una chiave locale può essere passato come terzo parametro al momento() e moment.utc()

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

Si può fare molto di più con il metodo utc().

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

Grazie, sto usando 'moment (d) .format (" YYYY-MM-DD ")' (dove d è la variabile nella domanda sopra). – jcuenod

+0

Felice di aiutare! Potresti essere anche in futuro, dal momento che questo ha aiutato? :) – ilter

5

Si tratta del formato della data.

Quando si juste stampa d, avete questo:

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

E 'GMT +2, quindi quando si stampa d.ToJson() hai perso 2 ore. Quindi sei il giorno prima alle 22:00

+0

Ok, ho il problema. Grazie! Come posso ottenere la giusta data? – jcuenod

+1

Memorizza anche il fuso orario, quindi quando lo analizzi in un secondo momento, prendi in considerazione il fuso orario. Oppure, non usare '.toJSON()', invece usa '.toString()'. –

+1

* "Come posso ottenere la data giusta?" * Memorizza sempre la data e l'ora in UTC. Converti solo in ora locale per scopi di visualizzazione. –