Ошибка функции даты в Javascript на часовых поясах EEST - PullRequest
4 голосов
/ 27 мая 2011
new Date("May 27, 2011, 1:00 pm EEST")

Ответ Firebug:

Date {Invalid Date}

Это известная ошибка в JavaScript? как вы интерпретируете часовой пояс "Eastern European Summer Time" в javascript с датой?

Я могу, например, изменить часовой пояс на +03: 00 или +0300, но тогда это будет не так дружелюбно для пользователя, потому что я использую тег и с помощью jQuery я форматирую каждый abbr innerHTML, чтобы значение заголовка таково, что когда вы наводите курсор на него, я все еще хочу, чтобы во всплывающей подсказке отображалось «27 мая 2011 г., 13:00 EEST», но в innerHTML мне нужно только «27 мая 2011 г.»

<abbr class="timestamp blue" title="May 27, 2011, 1:00 pm EEST">May 27, 2011</abbr>

Однако, из-за EEST, я получаю это

<abbr class="timestamp blue" title="May 27, 2011, 1:00 pm EEST">NaN</abbr>

Если я изменю EEST на что-то более распространенное, такое как EST или GMT, тогда никаких проблем, странно.

1 Ответ

5 голосов
/ 27 мая 2011

Из спецификации ECMA-скрипта (15.9.1.15 Формат строки даты и времени):

Не существует международного стандарта который определяет сокращения для гражданского часовые пояса, такие как CET, EST и т. д. и иногда то же самое сокращение даже используется в течение двух очень разное время зоны. По этой причине ISO 8601 и этот формат определяет числовой представления даты и времени.

С ISO 8601

В ISO 8601 нет указателей часовых поясов. Время представлено только по местному времени или по отношению к UTC

Короче говоря: это не ошибка. Вы не можете использовать такие зоны, как EEST и тому подобное, в объекте Date в javascript. Вам придется придерживаться UTC или обозначения +/-.

Вы можете найти много информации по теме @ на этой странице

...