@kirill-93

Как показывать пользователю данные в его временной зоне и нужно ли?

На сервере время стоит по UTC. У всех сущностей время создания измеряется в timestamp и передается пользователю в браузер в виде timestamp, а у пользователя на компьютере уже преобразуется в дату и время. Таким образом, каждый пользователь видит дату и время, согласно своему часовому поясу.
Но есть еще функционал графиков за 7 дней.
select count(*) as total, date
from events
where events.created_at > interval - 1 week
group by date

И вот тут у меня 2 вопроса:
1) Сервер генерирует список за 7 дней по своему серверному времени. У пользователя 2 часа ночи 12 апреля, а на сервере еще 23:00 11 апреля. Как в таком случае показывать данные с учетом Ч.П. пользователя, ведь они формируются на сервере?
2) Второй вопрос правильно ли это и нужно ли? Правильно ли каждому пользователю показывать графики в его часовом поясе или понятнее и лучше показать график и написать, что данные по UTC, а пользователь пусть сам считает?

К решению первого вопроса у меня только один вариант в голове. В браузере есть Date.getTimezoneOffset, которая возвращает количество минут от UTC. Это значение передавать на сервер и суммировать перед выборкой.
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 1
hint000
@hint000
у админа три руки
Ответ сильно зависит от предметной области. Если это ЦУП, то никаких часовых поясов, хоть Байконур, хоть Восточный, хоть Мыс Канаверал - для всех UTC. Если это расписание поездов, то раньше вся страна отравлялась и прибывала по московскому времени, но потом решили сделать по местному (можно спорить о правильности решения, но для иностранных пассажиров логичнее видеть местное время). Если не можете решить, какой вариант лучше, то предоставьте пользователям возможность выбора. Тут в дело вступает наука об UI/UX, чтобы возможность выбора помогала пользователю, а не запутывала его.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 апр. 2024, в 19:21
300 руб./за проект
23 апр. 2024, в 19:05
15000 руб./за проект
23 апр. 2024, в 19:01
7000 руб./за проект