Перейти к основному содержимому

Таймер отсчета

Это часть блока Обложка на странице московского фестиваля.

Пользователь может задать:

  • Текст заголовка
  • Дату дедлайна
  • Время дедлайна

Таймер показывает оставшееся время до даты и времени дедлайна. Если эта дата в прошлом - показывается 00 дней 00 часов 00 минут 00 секунл.

Логика

Пользователь CMS выбирает в поле Дата 11 ноября 2023. Значением становится 11 ноября 2023 00:00 по UTC+0. Не важно, в каком часовом поясе находится пользователь CMS, он всегда выбирает UTC+0 дату.

Юзер заходит на публичный сайт, сегодня у него 10 ноября 2023 12:00 UTC+3 (Москва).

Пришедшая из CMS дата 11 ноября 2023 00:00 по UTC+0 конвертируется в 11 ноября 2023 00:00 по UTC+3. Или если юзер в Красноярске, она сконвертируется в 11 ноября 2023 00:00 по UTC+7, и так далее.

Таким образом, юзер увидит, что осталось 0д 12ч. То есть неважно, в каком часовом поясе сидит пользователь, он всегда будет видеть отсчет до 11 ноября 00:00 в своем часовом поясе.

Время

Время просто позволяет отсчитывать не до 00:00 даты дедлайна, а до конкретного времени. Трюк с подстраиванием под таймзону пользователя, описанный выше, сохраняется.

Если время не указано - временем считается 00:00.

Корнер кейс

Если не указана дата, датой дедлайна считается Date.now(), то есть буквально время захода пользователя на страницу.

Если при этом указано время - датой дедлайна считается сегодняшний день и указанное время.