2012-07-03 23 views
8

calendario Google lanza me rfc3339, pero todas las fechas están en esos milisegundos Desde ene 1970.Cómo convertir la fecha en el RFC 3339 con el objeto de fecha Javascript (milisegundos desde 1970)

rfc3999:

2012-07-04T18:10:00.000+09:00 

Javascript hora actual:. (new Date()) getTime():

1341346502585 

prefiero las de los milisegundos porque yo sólo trato con cuenta atrás y no en fechas.

+1

Por cierto [RFC 3339] (https://tools.ietf.org/html/rfc3339) es un perfil del estándar [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) . Consulte [¿Cuál es la diferencia entre los formatos de fecha ISO 8601 y RFC 3339?] (Https://stackoverflow.com/q/522251/642706). –

Respuesta

11

Date.parse debería funcionar:

Date.parse('2012-07-04T18:10:00.000+09:00') 

Sin embargo, Date.parse es muy poco fiable en todos los navegadores, por lo que querrá poner a prueba a fondo. Si esto no funciona, entonces aquí es una función:

var googleDate = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3})([+-]\d{2}):(\d{2})$/; 

function parseGoogleDate(d) { 
    var m = googleDate.exec(d); 
    var year = +m[1]; 
    var month = +m[2]; 
    var day = +m[3]; 
    var hour = +m[4]; 
    var minute = +m[5]; 
    var second = +m[6]; 
    var msec = +m[7]; 
    var tzHour = +m[8]; 
    var tzMin = +m[9]; 
    var tzOffset = new Date().getTimezoneOffset() + tzHour * 60 + tzMin; 

    return new Date(year, month - 1, day, hour, minute - tzOffset, second, msec); 
} 
+2

Gracias, funciona como un encanto. Utilicé un código enorme con expresiones regulares y dejó de funcionar para mí, luego paso mucho tiempo buscando y leyendo en Google aquí pero nada, hasta ahora. Lo estoy usando en la extensión del navegador para que no tenga que ser una plataforma cruzada. gracias – DoTheEvo

+0

Versión ligeramente modificada [aquí] (https://jsfiddle.net/qm9osm4a/) que hace frente a Z o falta zona horaria, falta: en la zona horaria, y faltan milisegundos. – Crashthatch

5

Hay dos bibliotecas fechas de JavaScript que podría intentar:

Ambos le darán funciones que le permiten analizar un d genera fechas en casi cualquier formato.

Si trabaja mucho con fechas, querrá utilizar una de estas bibliotecas; es mucho menos complicado que rodar tus propias funciones todo el tiempo.

Espero que ayude.

+1

La muestra de código sería increíble. – Den

+0

Usando [moment.js] (http://momentjs.com/), 'moment ('2012-07-04T18: 10: 00.000 + 09: 00'). Unix()' debería ser el truco. – Marie

Cuestiones relacionadas