Pull to refresh

Comments 10

Мы тоже сталкивались с проблемой временных зон в браузерах, но по такому пути (автоматическое определение) не пошли. Точнее, авто-определение можно использовать для авто-подкидки пользователю временной зоны в форму ввода, но все же пусть лучше он сам окончательно ее подтверждает при регистрации (или тогда, когда это нужно).
Дело в том, что де-факто у простых юзеров временные зоны настроены не всегда правильно. У некоторых - как попало. Плюс многие из них перемещаются по миру со своими ноутбуками, не меняя временную зону, но переводя время на локальное. Если у них не обновлена ОС (не доставлены специальные fixes), то правила перехода могут не соответствовать действительности, так было недавно, когда USA поменяли правила перехода. В некоторых browser-ах нужные функции JS могут глючить (даже при правильной настройке времени в операционке). В общем, полный беспредел, как обычно. Особенно это было заметно, когда в прошлом году в USA поменяли правила перехода на летнее время.
Поэтому программистами нашей компании была написана своя реализация математики исчисления дат, а временная зона авто-подкидывалась, но не авто-определялась вообще без участия пользователя.
ручной режим тоже реализован. но так как люди по сути своей ленивы, основным сделан все же автомат.
Вообще конечно хочется спать, и мозг плоховато работает, но по идее толжен сработать такой алгоритм:

Передаём с сервера на клиент текущее серверное время (ts1), и то время которое нужно перевести и показать клиенту (ts2). Текущее клиентское время обозначим через tc1, а то которое нужно отобрзить - tс2

Очевидно ts1-tc1 = ts2-tc2
А отсюда tc2 = ts2+tc1-ts1
ts1-tc1 = ts2-tc2 не всегда верно. сервер или клиент может находится в временной зоне без перехода на летнее время
Если передать с сервера сразу дельту ts2 - ts1 и затем прибавить ее в UTС (до перевода в локальное время), то типа все будет правильно, но время передачи пакетов != 0 и учет этого потребует сложной логики (если нужна абсолютная точность).
UFO just landed and posted this here
Что-то я не понял всех танцев.
Передаём из PHP в JS timestamp, а там new Date(timestamp * 1000), вывод из этого объекта будет уже в локальном времени.
тоже можно, но в нашем случае клиент получит готовую страницу.
timestamp в каком часовом поясе? А в каком часовом поясе время на машине пользователя? new Date(timestamp * 1000) - вернет серверное время (в том часовом поясе, что он работает).
timestamp ни в каком часовом поясе. timestamp абсолютен.
Sign up to leave a comment.

Articles