Finché si è inizializzato moment-timezone con the data for the zones you want, il codice funziona come previsto.
Si sta convertendo correttamente l'ora nel fuso orario, che si riflette nella seconda riga di output da momentObj.format()
.
Passare a UTC non solo rilascia l'offset, ma torna al fuso orario UTC. Se hai intenzione di farlo, non hai affatto bisogno della chiamata originale .tz()
. Potresti semplicemente fare moment.utc()
.
Forse stai solo provando a cambiare la stringa del formato di uscita? Se è così, basta specificare i parametri desiderati al metodo format
:
momentObj.format("YYYY-MM-DD HH:mm:ss")
Per quanto riguarda l'ultima alle linee del codice - quando si torna a un oggetto Date
utilizzando toDate()
, si stanno dando il comportamento del momento. js e tornare al comportamento di JavaScript. Un oggetto JavaScript Date
verrà sempre stampato nel fuso orario locale del computer su cui è in esecuzione. Non c'è niente di moment.js può fare al riguardo.
Un paio di altre piccole cose:
Mentre il momento costruttore può prendere un Date
, di solito è meglio non usare uno. Per "ora", non utilizzare moment(new Date())
. Invece, basta usare moment()
. Entrambi funzioneranno ma è inutilmente ridondante. Se stai analizzando da una stringa, passa quella stringa direttamente nel momento. Non provare prima ad analizzarlo su un Date
. Troverai che il parser del momento è molto più affidabile.
Fusi orari come MST7MDT
esistono per motivi di compatibilità con le versioni precedenti. Derivano dai fusi orari di stile POSIX e solo alcuni di essi si trovano nei dati TZDB. A meno che non sia assolutamente necessario, è necessario utilizzare una chiave come America/Denver
.
fonte
2013-08-01 13:14:02
Che cosa si aspetta l'uscita e che l'uscita si ottiene? –
4 righe mi danno in output:
(Date object) Time with offset Thu Aug 01 2013 15:23:49 GMT+0300 (Финляндия (лето))
Ma il fuso orario deve essere MST7MDT –