Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
new Date(1970, 1, 14, 3, 4, 5)
Sat Feb 14 1970 03:04:05 GMT+0600 (OMST)
new Date(1970, 0, 6, 3, 4, 5)
Tue Jan 06 1970 03:04:05 GMT+0600 (OMST)
делает правильно, он учитывает изменения часовых поясов.Разве по стандарту положено учитывать?
15.9.1.7 Local Time Zone Adjustment
An implementation of ECMAScript is expected to determine the local time zone adjustment. … The value LocalTZA does not vary with time but depends only on the geographic location.
— www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.7
15.9.1.9 Local Time
Conversion from UTC to local time is defined by
LocalTime(t) = t + LocalTZA + DaylightSavingTA(t)
— www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.9
Строка принимается в формате RFC2822, весьма неудобном и трудном к ручному вводу. Получить такую строку из пользовательского ввода практически невозможно. Я не могу себе представить человека, который бы согласился вводить дату в таком формате.Насколько я знаю, строка принимается так же в формате ISO 8601:
> new Date('1998-02-01T00:00:00+07:00')
Sat Jan 31 1998 20:00:00 GMT+0300 (MSK)
new Date('2011-11-24T09:00:27+02:00')
Thu Nov 24 2011 13:00:27 GMT+0600 (OMST) // от полуночи текущей зоны
new Date('2011-11-24T09:00:27+02:00')
Date 2011-11-24T07:00:27.000Z // от полуночи по гринвичу
new Date('2011-11-24T09:00:27+0200')
Thu Nov 24 2011 14:00:27 GMT+0700 (OMST)
Между прочим, в этом как раз и есть разница между GMT и UTC. UTC – это время без смещения, а GMT – это время со смещением 0
Единственная библиотека, из попавшихся мне, которая использует базу данных Олсона для обсчета сдвигов — timezone-JS. Проблема использования этой библиотеки в том, что низлежащие библиотеки (date/time picker-ы) про неё ничего не знают и внутри активно используют стандартный Date.стандартный Date — это на самом деле не дата, а метка времени. Сама дата по идее не зависит от часового пояса, но из-за того, что многие описывают дату, через метку времени, то и огребают кучу проблем — необходимость пересчёта этой метки в зависимоти от часового пояса, так, чтобы она соответствовала нужной дате в этом поясе.
Date
function Date() { [native code] }
function Date() { [native code] }

Date, а то мне не удалось найти ничего по этому вопросу. Спасибо.console.log.toString()
Потому, что объект Date — не реализован на JS, а предоставляется браузером. А в каждом браузере используется своя библиотека работы со временем.Отсюда и различное поведение в разных браузерах.
Разве по стандарту положено учитывать?
15.9.1.7 Local Time Zone Adjustment
An implementation of ECMAScript is expected to determine the local time zone adjustment. … The value LocalTZA does not vary with time but depends only on the geographic location.
— www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.715.9.1.9 Local Time
Conversion from UTC to local time is defined by
LocalTime(t) = t + LocalTZA + DaylightSavingTA(t)
— www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.9
Ну а про DaylightSavingTA ничего такого не сказано.Это я просто цитировать не стал:
15.9.1.8 Daylight Saving Time AdjustmentТут тоже, как видите, от конкретного года зависеть не должно. Только от времени с начала года, високосности, дня недели первого дня года и географического положения.
An implementation of ECMAScript is expected to determine the daylight saving time algorithm. The algorithm to determine the daylight saving time adjustment DaylightSavingTA(t), measured in milliseconds, must depend only on four things:
(1) the time since the beginning of the year
t – TimeFromYear(YearFromTime(t))
(2) whether t is in a leap year
InLeapYear(t)
(3) the week day of the beginning of the year
WeekDay(TimeFromYear(YearFromTime(t)))
and (4) the geographic location.
— www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.8
В любом случае этой спецификации всего 3 года, а в браузерах объект Date появился за долго до неё.V8, скажем, всего вдвое старше.
Date в браузерах не лучше никаких прочих нарушений стандарта движками. В «просто» Java бы авторов такой реализации VM гнали поганой метлой, а в JS, почему-то, терпят.работает в разных браузерах по-разному
Проблемы даты и времени в JS