Javascript Date.parse помощь - PullRequest
       19

Javascript Date.parse помощь

4 голосов
/ 22 июля 2010

Я использую Javascript Date.parse(), чтобы проверить, наступило ли время начала после времени окончания.

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

Date.parse("12:00pm") > Date.parse("9:30pm")

В Chrome это происходиткак ложное (как и должно быть)

В IE оно неверно выглядит как истинное.

Значения, которые видит Chrome:

Thu Jul 22 2010 12:00:00 GMT-0400 (Eastern Daylight Time)
Thu Jul 22 2010 21:30:00 GMT-0400 (Eastern Daylight Time)

Значения, которые видит IE:

Thu Jul 22 12:00:00 EDT 2010
Thu Jul 22 09:30:00 EDT 2010

Как я могу заставить IE работать правильно?

update

ОК, это происходит только в IE7.Также я вижу, что теперь IE7 не получает am / pm, который хранится в окне SELECT и извлекается с помощью:

var startMerid = document.getElementById("start_time_ampm").options[document.getElementById("start_time_ampm").selectedIndex].value;

Мой выбор был таким:

<option>am</option>

, но я изменилна:

<option value="am">am</option>

и теперь это работает.

Ответы [ 3 ]

0 голосов
/ 22 июля 2010

Документы для Date.parse() в IE утверждают следующее:

Если используются 24-часовые часы, ошибка указывать «PM» для времен позже 12полдень .Например, «23:15 PM» является ошибкой.

Для кросс-браузерного решения следует избегать parse () и анализировать строку времени вручную.В качестве альтернативы вы можете использовать кросс-браузерную библиотеку для разбора дат / времени - DateJS является популярным.

0 голосов
/ 22 июля 2010

Вы не можете просто передать время Date.parse(), так как оно ожидает строку даты. Если вы перевернете > в вашем коде на <, вы заметите, что он все равно возвращает false. Это потому, что Date.parse() возвращает NaN.

Попробуйте это:

var a = new Date("January 1, 1970 12:00:00");
var b = new Date("January 1, 1970 21:30:00");

if (a > b) { alert(true); } else { alert(false); }
if (a < b) { alert(true); } else { alert(false); }
0 голосов
/ 22 июля 2010

В какой версии IE вы это тестируете?IE8 правильно возвращает false для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...