Посмотрите на скриншот.
Казалось бы, ничего необычного, да? Ближайший трамвай — через 5 минут.
А теперь вопрос со звёздочкой. Если мы сейчас находимся в другом часовом поясе, что это значит? Трамвай будет по-настоящему через 5 минут? Или это значит, что он должен был бы быть через 5 минут, если бы в Коломне было столько же времени, сколько в нашем часовом поясе?
Чтобы убрать все возможные недоразумения на этот счёт, в другом часовом поясе интерфейс отображает крупно время прибытия трамвая, а также текущее время в Коломне. Теперь всем понятно: сейчас в Коломне 09:26, трамвай будет в 09:31 по коломенскому времени, то есть через 5 минут. Никакой магии относительности.
Теперь о том, как это работает под капотом. Когда сервер собирает страницу, он встраивает в HTML своё текущее время. Браузер это время считывает и вычисляет разницу со своим. Если разница нулевая — значит, пользователь сидит в том же часовом поясе, и интерфейс просто показывает «через 5 минут».
Если разница не равна нулю, то браузер вычисляет разницу и отображает время с её учётом (то есть любой вызов функции Date.now() прибавляет ко времени эту разницу).
Дело закрыто.