Мне нужно сделать таймер обратного отсчета до какого-то события при помощи библиотеки 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 обновят сборку).
Альтернативный вариант - присылать с сервера сразу оставшееся время (например в секундах) до нужного события. В этом случае будет не важно, какое время у клиента (в том числе, если оно вообще неправильно выставлено, как иногда бывает когда пытаются продлить триальные версии некоторых программ).
Комментариев нет:
Отправить комментарий