2012-01-11 17 views
9

La API de Youtube devuelve un objeto JSON con una matriz de videos. Cada objeto de video tiene una fecha publicada formateada como "2012-01-11T20: 49: 59.415Z". Si inicializo un objeto Date de JavaScript utilizando el siguiente código, el objeto devuelve "Fecha no válida".Analizando una API de Youtube Fecha en Javascript

var dt = new Date("2012-01-11T20:49:59.415Z"); 

Estoy usando esto en iOS/Safari móvil, si eso hace la diferencia.

¿Alguna sugerencia o idea sobre cómo crear un objeto válido?

Respuesta

3

que terminamos encontrar una solución al http://zetafleet.com/blog/javascript-dateparse-for-iso-8601. Parece que la fecha está en un formato llamado 'ISO 8601.' En los navegadores anteriores (Safari 4, Chrome 4, IE 6-8), ISO 8601 no es compatible, por lo que Date.parse no funciona. El código de referencia de la entrada del blog ligado extiende la clase Fecha actual para apoyar la norma ISO 8601.

0

Si solo necesita una parte de la fecha (por ejemplo, si no le importa la hora o la zona horaria), puede quitar esa porción de la fecha.

+0

Estoy tratando de generar una fecha relativa, como "21 días atrás" tirando de los milisegundos desde el objeto Date. –

+0

Eso es fácil cuando termina con la representación de la fecha a través del script ISO 8601. Haga una nueva fecha global analícela en el objeto de fecha ISO 8601 y luego reste la "fecha publicada" de la "fecha actual" ... –

4

Pruebe usar JavaScript Date.parse(string) y Date constructor que toma el número de milisegundos desde la época. La función "analizar" debe aceptar una fecha ISO8601 válida en cualquier navegador.

Por ejemplo:

var d = new Date(Date.parse("2012-01-11T20:49:59.415Z")); 
d.toString(); // => Wed Jan 11 2012 15:49:59 GMT-0500 (EST) 
d.getTime(); // => 1326314999415 
+0

Esto no funciona en navegadores más antiguos. Estoy probando esto en iOS 4.2.1 y iOS 5.0.1. iOS 4 falla, mientras que iOS 5 funciona. –

3
var dt = "2012-01-11T20:49:59.415Z".replace("T"," ").replace(/\..+/g,"") 
dt = new Date(dt); 
Cuestiones relacionadas