2013-07-11 17 views
6

Mi chiedo se questo è normale o se mi manca qualcosa nella configurazione dello schema o nel processo di query:Mongoose che converte le date UTC memorizzate in ora locale?

La mia app e mangusta, sta memorizzando correttamente una data come UTC in mongodb. Ciò è confermato dalla visualizzazione dei documenti tramite la shell mongo. Quando recupero i documenti da mongodb via mangusta, la data è ora locale.

shell mongo: uscita http://cl.ly/image/2m3P212o0i2x

console.log dei risultati delle query: http://cl.ly/image/3W2q3b1R0F3q

C'è un modo per avere mangusta mantenere la data come UTC quando interrogato?

risposta

6

Mongoose e node.js non stanno facendo nulla per le tue date, è semplicemente che il tipo JavaScript Date produce un'ora locale stringa quando si chiama toString() su di esso anche se in realtà contiene l'ora in UTC.

Chiamare esplicitamente toUTCString() sull'oggetto Date se si desidera una stringa di tempo UTC.

+1

Gotcha. Dopo aver registrato i risultati della query, ho scoperto in vari modi che era console.log che mostrava le date nell'ora locale, quindi chiamava toString(). Buono a sapersi andare avanti ... Grazie per la risposta. –

1

Le marche temporali sono memorizzate in base al fuso orario in modo agnostico, come un timestamp unix. Questo timestamp funziona su fusi orari e il nodo lo interpreta utilizzando il fuso orario corrente. Puoi recuperare il valore UTC dall'oggetto data usando i metodi getUTC * come get getCHor()

+1

Grazie per la risposta, capisco che posso convertire UTC e lavorare con esso da lì. Mi è sembrato un po 'strano che la mangusta e/o il nodo lo portassero automaticamente all'ora locale. Forse la domanda migliore è: posso dire esplicitamente al nodo di usare UTC ... simile alla funzione date_default_timezone_set in PHP o in altre lingue? –

+1

@DM Metti le cose in mangusta in UTC o nella tua ora locale? Potresti essere in grado di cambiare il fuso orario del nodo usando process.env.TZ, ma non è raccomandato. https://github.com/joyent/node/issues/3286 – WouterH

Problemi correlati