2012-02-10 26 views
40

¿Puedo convertir iso date en milisegundos? por ejemplo quiero convertir este isoconvertir fecha de iso a milisegundos en javascript

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

a milisegundos.

Porque quiero comparar la fecha actual de la fecha de creación. Y la fecha de creación es una fecha iso.

+0

¿Qué quiere decir "milisegundos" exactamente? Milisegundos en relación a qué punto en el tiempo? ¿Te refieres a una marca de tiempo UNIX? –

+0

al igual que en yahoo api, la fecha se muestra en milisegundos '1328796537', pero en fb api, la fecha se muestra en iso' 2012-02-10T13: 18: 45 + 0000' –

+0

posible duplicado de [Ayuda analizando ISO 8601 fecha en Javascript] (http://stackoverflow.com/questions/4829569/help-parsing-iso-8601-date-in-javascript) – mplungjan

Respuesta

65

probar este

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 

EDITAR

Que ha proporcionado una fecha ISO. También es aceptada por el constructor del objeto Date

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

Editar

El mejor que he encontrado es deshacerse del 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); 

Parece trabajar. En cuanto a los problemas con la conversión de cadena ISO en el objeto Date, puede consultar los enlaces proporcionados.

EDITAR

solucionado el error de conversión incorrecto milisegundos de acuerdo con el comentario de Prasad19sara.

+0

No funciona con timezoneoffset http://jsfiddle.net/mplungjan/r7xDk/ – mplungjan

+0

Sí, la fecha no se analizará en todos los navegadores. [Vea mi respuesta a una pregunta relacionada.] (Http://stackoverflow.com/questions/5802461/javascript-which-browsers-support-parsing-of-iso-8601-date-string-with-date-par/5803041# 5803041) –

+0

Y vea mi comentario sobre la respuesta debajo de usted;) – mplungjan

19

una abreviatura de las soluciones anteriores es

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

Se hace un en la conversión del tipo de mosca y emite directamente la fecha en formato milisegundo.

Otra forma también es utilizar el método parse de Date util, que solo emite el tiempo EPOCH en milisegundos.

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

Tiene un pequeño error tipográfico allí, '+' –

+0

@ stuart-siegler Eso en realidad no es un error tipográfico, el '+' devuelve la fecha en milisegundos. – LordTribual

+0

@LordTribual "+ new" devuelve la fecha en milisegundos? –

1

Otra opción a partir del 2017 es el uso de Date.parse(). El documento documentation de MDN señala, sin embargo, que no es confiable antes de ES5.

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

Consulte el fiddle para obtener más información.

1

Otra posible solución es comparar la fecha actual con January 1, 1970, puede obtener January 1, 1970 por new Date(0);

var date = new Date(); 
var myDate= date - new Date(0); 
Cuestiones relacionadas