2014-04-25 20 views
25

Probabilmente e facile risposta a questo, ma non riesco a trovare un modo per ottenere moment.js per restituire una data UTC in millisecondi. Ecco cosa sto facendo:Converti data in UTC utilizzando moment.js

var date = $("#txt-date").val(), 
    expires = moment.utc(date); 

Qualche idea su cosa sto facendo male?

risposta

45

Si trova in the documentation. Con un momento come una biblioteca, ti esorto a leggere l'interezza della documentazione. È davvero importante.

Supponendo che il testo di input viene immesso in termini di tempo locale del utenti:

var expires = moment(date).valueOf(); 

Se l'utente viene istruito in realtà inserire una data UTC/ora, quindi:

var expires = moment.utc(date).valueOf(); 
+61

Questo è in realtà non è così facilmente reperibili nella documentazione ... – fox

+10

Edited - rimosso "facilmente". :) –

+5

E se ho già un momento con un fuso orario, come posso convertirlo in UTC? –

15

Io uso questo metodo e funziona ValueOf non funziona per me.

moment.utc(yourDate).format() 
+1

Funziona come da documentazione. converte ora locale in UTC. –

+0

C'è qualcosa di sospetto qui. Sto usando moment.js ver. 2.17.1 e se 'yourdate' è a '2017-10-14T21: 00: 00Z' (en-us), lo snippet sopra riportato restituisce esattamente lo stesso risultato '2017-10-14T21: 00: 00Z' che ovviamente non è utc da quando sono in gmt + 3. Il risultato corretto sarebbe '2017-10-15T00: 00: 00 + 03: 00' e lo ottieni tramite 'momento (yourDate) .format()'. – xDisruptor

1

Se tutto il resto fallisce, basta reinizializzare con un inverso del proprio offset locale.

var timestamp = new Date(); 
var inverseOffset = moment(timestamp).utcOffset() * -1; 
timestamp = moment().utcOffset(inverseOffset ); 

timestamp.toISOString(); // This should give you the accurate UTC equivalent. 
0
moment.utc(date).format(...); 

è la strada da percorrere, dal momento che

moment().utc(date).format(...); 

si comporta strano ...

+0

Potresti per favore elaborare il comportamento strano di 'moment(). Utc (date) .format (...)'? –

+0

Il comportamento non è strano, quelli sono metodi diversi. Il primo 'momento.utc (data)' è per [parsing] (https://momentjs.com/docs/#/parsing/utc/) il 'date'. Il secondo 'momento(). Utc (data)' è per [manipolazione] (https://momentjs.com/docs/#/manipulating/utc/) l'ora corrente ('momento()') e la 'data' il parametro è inutile poiché questo '.utc()' in questo caso non si aspetta alcun parametro. – CodingHamster