2016-05-30 18 views
7

Sto avendo date come di seguito:momentjs convertire datetime a UTC da un altro fuso orario

05/30/2014 11:21:37 AM

I miei utenti sarà entrare in quella dei dati e avere il proprio fuso orario. Potrebbe essere qualcosa come "Stati Uniti/Est", "Stati Uniti/Pacifico-Nuovo", ecc. Voglio convertire il tempo in UTC, ma non sono in grado di farlo. c'è un modo per farlo?

sto usando nodo e ho provato momentJS e leggere il seguito:

http://momentjs.com/docs/

http://momentjs.com/guides/

Convert date to another timezone in JavaScript

Come si converte da un fuso orario differente a UTC?

Modifica

ho provato questi:

moment().utc(0).format('YYYY-MM-DD HH:mm Z') 
moment.tz(dateString, "US/Eastern").format() 

Nell'esempio precedente dateString è la data stringa. Voglio impostare il fuso orario su "US/Eastern" e convertirlo in UTC.

+4

Se stai andando giù per votare, per favore spiega perché. Ho chiaramente provato molte cose per questo. – KVISH

risposta

12
// your inputs 
var input = "05/30/2014 11:21:37 AM" 
var fmt = "MM/DD/YYYY h:mm:ss A"; // must match the input 
var zone = "America/New_York"; 

// construct a moment object 
var m = moment.tz(input, fmt, zone); 

// convert it to utc 
m.utc(); 

// format it for output 
var s = m.format(fmt) // result: "05/30/2014 3:21:37 PM" 

Si noti che ho utilizzato lo stesso formato di output del formato di input, che è possibile modificare a piacere.

È anche possibile fare tutto questo in una sola riga, se si preferisce:

var s = moment.tz(input, fmt, zone).utc().format(fmt); 

Inoltre, si noti che ho usato il formato di Area/Località (America/New_York), al posto del vecchio stile US/Eastern. Questo dovrebbe essere preferibile, in quanto gli Stati Uniti/* sono solo lì per scopi di compatibilità con le versioni precedenti.

Inoltre, US/Pacific-New non deve mai essere utilizzato. Ora è lo stesso di US/Pacific, che puntano entrambi a America/Los_Angeles. Per ulteriori informazioni sulla storia di questo, see the tzdb sources.

+0

ciao @Matt problema mon è che non ho la data di input in formato stringa, ma in UTC, e momento o qualsiasi funzione può convertirlo in stringa, ottengo sempre convertire in stringl come Mer Nov 01 2017 12:22:04 GMT +0100 (CET), qualche idea? – stackdave

+0

@stackdave - Non capisco il tuo commento. Sembra non essere correlato alla domanda qui. Si prega di fare una nuova domanda con i dettagli di supporto. –

Problemi correlati