2010-06-11 11 views

Respuesta

9

que está recibiendo NaN valor en el IE 8 y su trabajo en Firefox debido a que el formato de la cadena varía con el navegador y el sistema operativo.

Por ejemplo, en IE6 para Windows XP, la cadena tiene el siguiente formato:

Tue Dec 05 16:47:20 CDT 2006 

Pero en Firefox para Windows XP, la cadena es

Tue Dec 05 2006 16:47:20 GMT-0500 

para que sea compatible con En ambos navegadores, primero deberá verificar el navegador en su código de JavaScript y, en consecuencia, dar su cadena de fecha de entrada.

+7

¿Pero hay un formato común compatible en todos los navegadores y plataformas? –

+1

Para mí, .toJSON() funciona. Devuelve la fecha en un formato que se ve como 'aaaa-mm-ddTxx.xx'. Lo intenté en IE8 y FireFox 14. – Samuel

+0

o uso [moment.js] (http://momentjs.com/) –

0

debido al +00000. trate de añadir que la última

var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000"); 
+2

Sí, pero funciona esto en todos los navegadores y plataformas? –

10

que he encontrado el análisis jQuery Globalization Plugin fecha para funcionar mejor. Otros métodos tenían problemas entre navegadores y cosas como date.js no se habían actualizado en bastante tiempo.

Tampoco necesita un datePicker en la página. Que sólo puede llamar a algo similar al ejemplo dado en la documentación:

$.datepicker.parseDate('yy-mm-dd', '2007-01-26'); 
4

se resuelve mi problema mediante la creación de un objeto fecha y dejar que me dan de nuevo la marca de tiempo. Pero para ello es necesario que para convertir la cadena en este formato:

year, month, date, hours, minutes, seconds,ms 

un ejemplo sería como:

dateObj = new Date(year, month, date); 
timestamp = dateObj.getTime(); 

Esto funciona salvamento en IE y FF.

IE Dev Center: Date Object (JavaScript)

Mozilla Dev Network: Date

Para su ejemplo lo haría con algo como esto:

//your string 
var str = "Fri Jun 11 04:55:12 +0000 2010"; 
//maps months to integer from 0 to 11 
var monthArray = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nev":10, "Dec":11}; 
//get the values from the string 
var regex = /^[^ ]+ ([^ ]+) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) \+(\d{4}) (\d{4})$/; 
match = regex.exec(str); 
var month = monthArray[match[1]], 
    date = match[2], 
    hours = match[3], 
    minutes = match[4], 
    seconds = match[5], 
    ms  = match[6], 
    year = match[7]; 

//create date object with values 
var dateObject = new Date(year, month, date, hours, minutes , seconds, ms); 

var ts = dateObject.getTime(); //timestamp in ms 
+0

Esto! Nota jan comienza en 0 :) – markthewizard1234

Cuestiones relacionadas