Я хочу преобразовать строку даты в Date
javascript, используйте этот код:
var date = new Date('2013-02-27T17:00:00');
alert(date);
'2013-02-27T17:00:00'
время в формате UTC в объекте JSON с сервера.
Но результат приведенного выше кода отличается в Firefox и Chrome:
Firefox возвращает:
Wed Feb 27 2013 17:00:00 GMT+0700 (SE Asia Standard Time)
Chrome возвращает:
Thu Feb 28 2013 00:00:00 GMT+0700 (SE Asia Standard Time)
Это другой 1 день, правильный результат, которого я ожидал, - это результат от Chrome.
Демо-код: http://jsfiddle.net/xHtqa/2/
Как я могу исправить эту проблему, чтобы получить одинаковый результат в обоих случаях?
javascript
date
timezone
куонгле
источник
источник
Date {Wed Feb 27 2013 17:00:00 GMT+0000 (GMT)}
для меня в обоих (Linux).Ответы:
Правильный формат для UTC будет
2013-02-27T17:00:00Z
(Z для зулусского времени). Добавьте,Z
если нет, чтобы получить правильную строку даты и времени UTC.источник
Да, к сожалению, алгоритмы разбора даты зависят от реализации. Из спецификации
Date.parse
(которая используетсяnew Date
):Чтобы
Date
конструктор (возможно) не использовал местный часовой пояс, используйте строку datetime с информацией о часовом поясе, например"2013-02-27T17:00:00Z"
. Однако трудно найти формат, который надежно анализируется каждым браузером - формат ISO не распознается IE <8 (см. JavaScript: какие браузеры поддерживают синтаксический анализ строки даты ISO-8601 с помощью Date.parse ). Лучше использовать временную метку unix, то есть миллисекунды с эпохи unix , или использовать регулярное выражение, чтобы разбить строку на части, а затем передать ихDate.UTC
.источник
Я нашел здесь одну вещь. Кажется, что в собственной консоли Firefox Inspector Console может быть ошибка: если я запускаю «new Date ()» в собственном Inspector, она показывает дату с неправильным часовым поясом, локалью GMT, но при выполнении той же команды в консоли Firebug Extension Console дата показан мой правильный часовой пояс (GMT-3: 00).
источник
Заметил, что FireFox не возвращает такой же результат, как Chrome. Похоже, формат, который вы используете в kendo.toString для даты, имеет значение.
Последний результат консоли - это то, что мне нужно:
источник
Попробуйте использовать moment.js. Он работает очень хорошо и одинаково со всеми браузерами. поставляется с множеством вариантов форматирования. используйте момент ('date'). format ("") вместо New Date ('date')
источник