Подписка на блог

РСС JSON Feed

Трамвай будет через 5 минут

Посмотрите на скриншот.

Казалось бы, ничего необычного, да? Ближайший трамвай — через 5 минут.

А теперь вопрос со звёздочкой. Если мы сейчас находимся в другом часовом поясе, что это значит? Трамвай будет по-настоящему через 5 минут? Или это значит, что он должен был бы быть через 5 минут, если бы в Коломне было столько же времени, сколько в нашем часовом поясе?

Чтобы убрать все возможные недоразумения на этот счёт, в другом часовом поясе интерфейс отображает крупно время прибытия трамвая, а также текущее время в Коломне. Теперь всем понятно: сейчас в Коломне 09:26, трамвай будет в 09:31 по коломенскому времени, то есть через 5 минут. Никакой магии относительности.

Теперь о том, как это работает под капотом. Когда сервер собирает страницу, он встраивает в HTML своё текущее время. Браузер это время считывает и вычисляет разницу со своим. Если разница нулевая — значит, пользователь сидит в том же часовом поясе, и интерфейс просто показывает «через 5 минут».

Если разница не равна нулю, то браузер вычисляет разницу и отображает время с её учётом (то есть любой вызов функции Date.now() прибавляет ко времени эту разницу).

Дело закрыто.

Подписаться на блог
Отправить
Поделиться
Твитнуть
Запинить