Подтвердить что ты не робот

Ошибка JavaScript-анализа даты JavaScript IE

Почему IE не может анализировать эту строку как объект Date.

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

Однако он хорошо работает в FireFox. Я запускаю IE 8.

Спасибо.

4b9b3361

Ответ 1

Вы получаете значение NaN в IE 8 и его работу в Firefox, потому что формат строки зависит от браузера и операционной системы.

Например, в IE6 для Windows XP строка имеет следующий формат:

Tue Dec 05 16:47:20 CDT 2006

Но в Firefox для Windows XP строка

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

чтобы сделать его совместимым с обоими браузерами, вам необходимо сначала проверить браузер в своем javascript, а затем соответственно введите строку ввода даты.

Ответ 2

Я нашел jQuery-глобализационный модуль, чтобы лучше работать. Другие методы имели проблемы с перекрестным браузером, и такие вещи, как date.js, не обновлялись довольно долго.

Вам также не нужен datePicker на странице. Вы можете просто вызвать что-то похожее на пример, указанный в документах:

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

Ответ 3

Решена моя проблема, создав объект даты и позвольте мне вернуть временную метку. Но для этого вам нужно преобразовать строку в этот формат:

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

пример будет выглядеть следующим образом:

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

Это работает в IE и FF.

Центр IE Dev: объект Date (JavaScript)

Сеть Mozilla Dev: дата

В вашем примере вы бы хотели что-то вроде этого:

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

Ответ 4

из-за +00000. попробуйте добавить, что последний

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