Как преобразовать временную метку unix в объект даты JavaScript (учитывать часовой пояс)

var date = new Date(1257397200000​);
document.write(date);
​

Вывести код выше, я получил Wed Nov 04 2009 23:00:00 GMT-0600 (Central Standard Time)

Я ищу способ создания объекта даты на основе другого часового пояса, скажем, для этого штампа времени. Я хочу получить объект даты, например Thursday, November 5th 2009, 00:00:00 (GMT -5).

Обратите внимание, что даты отличаются друг от друга в соответствии с двумя часовыми поясами, , хотя они представляют один и тот же момент времени. Я в CST, почему созданный объект создается с помощью CST?

Спасибо.

Ответ 1

Нет, эти даты не отличаются друг от друга, поскольку они не представляют разные моменты времени. Оба представляют Thu, 05 Nov 2009 05:00:00 GMT.

Объект

Date в JavaScript не зависит от часовой пояс, он представляет только момент времени. Тот факт, что Date.toString() включает часовой пояс, очень вводит в заблуждение, нет информации о часовых поясах в Date. Это всего лишь обертка вокруг миллисекунд с эпохи.

Часовой пояс, который вы видите, основан на локали OS/браузера. Вы не можете создать объект Date в разных часовых поясах. Подумайте, используя семейство методов getUTC*() для получения агностических значений часовых поясов браузера.

Кстати, ваш пример кода печатает:

Thu Nov 05 2009 06:00:00 GMT+0100 (CET)

на моем компьютере - и это все тот же момент времени.

См. также