IE JavaScript ошибка разбора даты - PullRequest
13 голосов
/ 11 июня 2010

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

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

Тем не менее, он хорошо работает в FireFox. Я использую IE 8.

Спасибо.

Ответы [ 5 ]

10 голосов
/ 31 декабря 2010

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

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

$.datepicker.parseDate('yy-mm-dd', '2007-01-26');
9 голосов
/ 11 июня 2010

Вы получаете значение 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 код, а затем, соответственно, введите строку ввода даты.

4 голосов
/ 25 июля 2014

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

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

пример будет выглядеть так:

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

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

IE Dev Center: объект Date (JavaScript)

Сеть разработчиков Mozilla: Дата

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

//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 голосов
/ 14 июля 2010

Это может вам помочь.Я только что решил проблему, подобную этой.

Проблема с функцией даты Javascript в IE 7, возвращает NaN

0 голосов
/ 11 июня 2010

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

var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...