Date (dateString) возвращает неверную дату в FF - PullRequest
2 голосов
/ 18 июля 2010

Страница отлично работает в Chrome, но у меня есть одна небольшая ошибка в FF и другая проблема в IE. Помощь с любым из этих вопросов очень ценится. Поскольку я был в тупике из-за ошибки FF, я начну с нее:

Вот код: http://truxmapper.appspot.com/sched.html

Средство выбора даты выбирает дату в формате «07-08-2010 23:28». Теперь мне нужно передать это время в качестве параметра моему сервлету, который ожидает время, представленное как long. Это не проблема в Chrome. Объект Date принимает строку в указанном выше формате, но когда я пытаюсь использовать getTime () в дату, инстанцированную строкой в ​​FF, он возвращает NaN. Итак, на странице, на которую я ссылаюсь, есть небольшая обработка, требующая от пользователя повторно ввести даты, если они читаются как NaN. Это, очевидно, даже не решение проблемы, поскольку, даже если вы повторно введете дату, она все равно будет читать NaN. Мне нужно знать, почему функция Date не создает экземпляр, используя строку, которую вы видите в поле ввода текста в FF.

В IE почему-то говорят, что sTime не определено.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 18 июля 2010

Этот формат даты неоднозначен. Попробуйте это как yyyy-mm-dd вместо мм-дд-гггг или дд-мм-гггг.

3 голосов
/ 18 июля 2010

Попробуйте

new Date(Date(dateString)).getTime()

(похоже на уродливый обходной путь ...)

Редактировать: Это приведет к неправильному результату.


Формат даты, используемый в Javascript, должен иметь форму YYYY MM DD HH:mm:ss.Вы можете преобразовать формат в эту форму с помощью

// dateString = "07-08-2010 23:28";
dateString = dateString.replace(/(\d+) (\d+) (\d+)/, '$3-$1-$2');

Но, как уже упоминалось в комментарии, не существует стандартного формата даты, используемого Javascript до стандарта ECMAScript 5.Лучше разобрать dateString напрямую:

m = dateString.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
date = new Date(+m[3], m[1]-1, +m[2], +m[4], +m[5]); // Note: January = 0.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...