На сервере время стоит по 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. Это значение передавать на сервер и суммировать перед выборкой.