Вопрос по timezone, javascript, timezone-offset, unix-timestamp – Получить текущую временную метку из определенного часового пояса

6

Есть ли простой способ получить метку времени Unix в JavaScript из определенного часового пояса? например, я хочу, чтобы клиент отправил мне метку времени Unix, но я хочу, чтобы она соответствовала моему часовому поясу.

Спасибо!

Ваш Ответ

3   ответа
1

вам нужно применить смещение часового пояса ко времени, а затем удалить смещение из значения (проверьте это, я полагаю, из памяти):

var now = new Date(),
    offset = -(now.getTimezoneOffset() * 60 * 1000), // now in milliseconds
    userUnixStamp = +now + offset;

Теперь смещение от вашего собственного:

var now = new Date(),
    offset = now.getTimezoneOffset() * 60 * 1000,
    yourUnixStamp = userUnixStamp - offset;
Мне нужно, чтобы любой клиент часового пояса работал одновременно с сервером - я уже установил время сервера в UTC, чтобы упростить его - теперь я попытался сгенерировать время UTC с помощью этого: var d = new Date (); var utc = Math.round (d.getTime () + (d.getTimezoneOffset () * 60000) / 1000); но он всегда возвращает микротайм (почему ?! есть метка времени / 1000), которая на 8 часов впереди ... Toby
Не могли бы вы обернуть это в пример, где клиент, независимо от того, что возвращает ту же метку времени для Лос-Анджелеса? потому что я не могу сейчас сосредоточиться на этом ... я продолжаю получать разные результаты. * brainmelt Toby
Не могли бы вы объяснить ситуацию немного больше? Откуда берется дата? Как ты к этому добираешься? Eli
5

а затем конвертировать в ваш часовой пояс на сервере?

var utcEpochSeconds = dateObj.getTime() + (dateObj.getTimezoneOffset() * 60000);
Да, если ваши часы не настроены неправильно или вы путешествуете на релятивистских скоростях:en.wikipedia.org/wiki/Coordinated_Universal_Time tjdett
UTC всегда один и тот же, несмотря ни на что? (Я сосу на вещи часового пояса) Toby
Ну да, потому что ты в СШАТихоокеанский часовой пояс, что на восемь часов отстает от UTC. Предполагая, что ваши системные часы и часовой пояс настроены правильно, ваш результат в формате UTC должен совпадать с результатом в формате UTC во всем мире, с отклонением в несколько секунд. tjdett
но если я сравниваю свой локальный результат с временем UTC, я 8 часов выходной ?! (я в часовом поясе Лос-Анджелеса) Toby
Безусловно, лучшее решение, поскольку локальный компьютер не обязательно знает смещение часового пояса сервера. До сих пор не могу понять, почему нетdateObj.getUTCTime() метод.
1

использованиеtoISOString чтобы получить метку времени UTC.

var date = new Date();
date.toISOString(); // EST would be 6 hour diff from GMT
Разве это не старый IE, который не поддерживает его? : P В любом случае, создайте прокладку. Trevor
toISOString() ES5 и пока не поддерживается хорошим процентом используемых веб-браузеров. Не трудно подражать тем, кому этого не хватает. RobG

Похожие вопросы