2012-02-10 11 views
40

Posso convertire la data iso in millisecondi? per esempio voglio convertire questo isoconvertire la data iso in millisecondi in javascript

2012-02-10T13:19:11+0000 

di millisecondi.

Perché voglio confrontare la data corrente dalla data di creazione. E la data di creazione è una data di iso.

+0

Cosa intendi esattamente per "millisecondi"? Millisecondi rispetto a quale punto nel tempo? Intendi un timestamp UNIX? –

+0

proprio come in yahoo api, la data viene mostrata in millisecondi '1328796537', ma in fb api, la data viene mostrata in iso' 2012-02-10T13: 18: 45 + 0000' –

+0

possibile duplicato di [Guida che analizza la data ISO 8601 in Javascript] (http://stackoverflow.com/questions/4829569/help-parsing-iso-8601-date-in-javascript) – mplungjan

risposta

65

Prova questa

var date = new Date("11/21/1987 16:00:00"); // some mock date 
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds 
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative 

EDIT

Hai fornito una data di ISO. E 'anche accettato dal costruttore della Date oggetto

var myDate = new Date("2012-02-10T13:19:11+0000"); 
var result = myDate.getTime(); 

Modifica

Il migliore che ho trovato è quello di sbarazzarsi dell'offset manualmente.

var myDate = new Date("2012-02-10T13:19:11+0000"); 
var offset = myDate.getTimezoneOffset() * 60 * 1000; 

var withOffset = myDate.getTime(); 
var withoutOffset = withOffset - offset; 
alert(withOffset); 
alert(withoutOffset); 

Sembra funzionare. Per quanto riguarda i problemi con la conversione della stringa ISO nell'oggetto Date, è possibile fare riferimento ai collegamenti forniti.

EDIT

Corretto il bug con la conversione non corretto per millisecondi in base al commento di Prasad19sara.

+0

Non funziona con timezoneoffset http://jsfiddle.net/mplungjan/r7xDk/ – mplungjan

+0

Sì, la data non verrà analizzata su tutti i browser. [Vedi la mia risposta sulla domanda correlata.] (Http://stackoverflow.com/questions/5802461/javascript-which-browsers-support-parsing-of-iso-8601-date-string-with-date-par/5803041# 5803041) –

+0

E vedere il mio commento sulla risposta sotto il tuo;) – mplungjan

19

Una notazione delle precedenti soluzioni è

var myDate = +new Date("2012-02-10T13:19:11+0000"); 

Fa un sulla conversione tipo volo e fornisce in uscita direttamente data in formato millisecondo.

Un altro metodo utilizza anche il metodo parse di Date util che emette solo il tempo EPOCH in millisecondi.

var myDate = Date.parse("2012-02-10T13:19:11+0000"); 
+0

Hai un piccolo refuso lì, '+' –

+0

@ stuart-siegler Che in realtà non è un refuso, il '+' restituisce la data in millisecondi. – LordTribual

+0

@LordTribual "+ new" restituisce la data in millisecondi? –

1

Un'altra opzione come del 2017 è quello di utilizzare Date.parse(). MD23 documentation segnala, tuttavia, che non è affidabile prima di ES5.

var date = new Date(); // today's date and time in ISO format 
var myDate = Date.parse(date); 

Vedere fiddle per ulteriori dettagli.

1

Un'altra possibile soluzione è confrontare la data corrente con January 1, 1970, è possibile ottenere January 1, 1970 per new Date(0);

var date = new Date(); 
var myDate= date - new Date(0); 
Problemi correlati