Страницы

Поиск по вопросам

Показаны сообщения с ярлыком momentjs. Показать все сообщения
Показаны сообщения с ярлыком momentjs. Показать все сообщения

пятница, 24 января 2020 г.

Как высчитывать разницу во времени, учитывая часовые зоны?

#javascript #время #timezone #momentjs


Мне нужно сделать таймер обратного отсчета до какого-то события при помощи библиотеки
MomentJS.

Сервер мне присылает время (назовем его eventTime), до которого должен идти отсчет,
я выясняю разницу между текущим и вывожу в HTML. Здесь все просто. 
Проблема в том, что сервер присылает время по МСК и преобразование eventTime = moment.utc(time)
в функции таймера мне ничего не дает.

Как мне высчитывать разницу во времени, учитывая часовые зоны? 
    


Ответы

Ответ 1



В идеале конечно получать от сервера время в UTC. Но если это невозможно, преобразовывайте из московского времени с помощью moment timezone: var t = moment.tz("2013-11-18 11:55", 'Europe/Moscow'); И не забывайте обновлять библиотеку moment timezone каждый раз, когда вступит в силу новый закон о летнем времени в зоне 'Europe/Moscow' (и ребята из moment timezone обновят сборку). Альтернативный вариант - присылать с сервера сразу оставшееся время (например в секундах) до нужного события. В этом случае будет не важно, какое время у клиента (в том числе, если оно вообще неправильно выставлено, как иногда бывает когда пытаются продлить триальные версии некоторых программ).

вторник, 19 марта 2019 г.

Как высчитывать разницу во времени, учитывая часовые зоны?

Мне нужно сделать таймер обратного отсчета до какого-то события при помощи библиотеки MomentJS.
Сервер мне присылает время (назовем его eventTime), до которого должен идти отсчет, я выясняю разницу между текущим и вывожу в HTML. Здесь все просто. Проблема в том, что сервер присылает время по МСК и преобразование eventTime = moment.utc(time) в функции таймера мне ничего не дает.
Как мне высчитывать разницу во времени, учитывая часовые зоны?


Ответ

В идеале конечно получать от сервера время в UTC. Но если это невозможно, преобразовывайте из московского времени с помощью moment timezone
var t = moment.tz("2013-11-18 11:55", 'Europe/Moscow');
И не забывайте обновлять библиотеку moment timezone каждый раз, когда вступит в силу новый закон о летнем времени в зоне 'Europe/Moscow' (и ребята из moment timezone обновят сборку).
Альтернативный вариант - присылать с сервера сразу оставшееся время (например в секундах) до нужного события. В этом случае будет не важно, какое время у клиента (в том числе, если оно вообще неправильно выставлено, как иногда бывает когда пытаются продлить триальные версии некоторых программ).