2012-11-09 11 views
40

Sto creando un programma per qualcosa sulla costa orientale e ho bisogno di creare una data che restituisca sempre un oggetto data/timestamp per questo momento.Ignorare i fusi orari durante la creazione di una data in javascript/momentjs

Quindi, se apro la pagina a Parigi alle 18:00, lo "new myDate()" deve restituire 12:00.

Qualche suggerimento su come posso farlo con wither momentJS o solo Javascript? Il risultato finale dovrebbe essere un oggetto Date javascript.

risposta

77

È possibile farlo con moment.js utilizzando moment.utc().

http://momentjs.com/docs/#/parsing/utc/

moment([2011, 10, 8, 5]).format(); // different output based on timezone 
moment.utc([2011, 10, 8, 5]).format(); // same output for all timezones 

Il modo moment.utc opere è impostando un flag internamente per utilizzare getUTCMinutes anziché getMinutes, quindi l'uscita è la stessa in tutti i fusi orari.

+1

Ah, non ha visto che uno. Come aggiungerebbe il fuso orario giusto con questo? Sono riuscito a farlo con js, ma preferirei momenti. Ho provato questo: 'new Date (moment.utc(). Add ('minutes', -moment(). Zone()). Unix() * 1000)', ma la data è di 5 ore di. – kimpettersen

+0

Si potrebbe simulare semplicemente non usando un fuso orario. Quindi se la data deve essere alle 5 del mattino, basta fare moment.utc ([anno, mese, data, 5]) e quindi formattarlo e visualizzarlo. Se si sta tentando di visualizzare una data in un determinato fuso orario, diventa più complicato, in quanto è necessario calcolare l'offset in base a quando si verifica l'ora legale per quel fuso orario. – timrwood

+0

Sperimenta con moment.utc(). Zone (5) per consentire a momentjs di gestire l'offset del fuso orario internamente. – zacharydl

9

Se si desidera che il fuso orario completamente ignorato, è possibile utilizzare il seguente approccio:

var firstDayStr = '29 January 2014'; 
    var startAtTime = '10:01:02 AM'; 
    var localFormat = 'YYYY-MM-DD[T]HH:mm:ss'; 

    var m = moment(firstDayStr + ' ' + startAtTime).format(localFormat); 

    console.log(m); 

uscita:

2014-01-29T10:01:02