Errore di analisi della data JavaScript di IE

Perché IE non può analizzare questa stringa come object Date.

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

Tuttavia, funziona bene in FireFox. Sto eseguendo IE 8.

Grazie.

Stai ottenendo valore NaN in IE 8 e funziona in Firefox perché il formato della stringa varia a seconda del browser e del sistema operativo.

Ad esempio, in IE6 per Windows XP, la stringa è nel seguente formato:

 Tue Dec 05 16:47:20 CDT 2006 

Ma in Firefox per Windows XP, la stringa è

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

per renderlo compatibile con entrambi i browser devi prima controllare il browser nel tuo codice javascript e quindi fornire la stringa della data di input.

Ho trovato l’analisi della data di jQuery Globalization Plugin per funzionare al meglio. Altri metodi avevano problemi di cross-browser e cose come date.js non erano state aggiornate da un po ‘di tempo.

Inoltre, non è necessario un DatePicker nella pagina. Puoi semplicemente chiamare qualcosa di simile all’esempio dato nei documenti:

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

Il problema è risolto creando un object data e permettimi di restituire il timestamp. Ma per questo è necessario convertire la stringa in questo formato:

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

un esempio sarebbe come:

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

Questo funziona salvo in IE e FF.

IE Dev Center: Date Object (JavaScript)

Mozilla Dev Network: Date

Per il tuo esempio dovresti fare qualcosa del genere:

 //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 

a causa del +00000. prova ad aggiungere che l’ultimo

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

Questo potrebbe aiutarti. Ho appena risolto un problema simile a questo.

Problema con la funzione Date Javascript in IE 7, restituisce NaN