У меня проблемы с пониманием того, как серверы обрабатывают определенные часовые пояса операции и представляют локальную информацию пользователям.Я читал, что вам никогда не нужно хранить локальный часовой пояс пользователя, но вместо этого просто сохраняйте дату в метке времени со смещением UTC.
Так что, например, у меня есть пользователь, который находится в Калифорнии, но мой серверрасположен в Нью-Йорке.Я создаю приложение календаря, которое должно отображать все встречи, которые этот человек имеет на сегодняшний день с полуночи до полуночи включительно.Я запрашиваю базу данных для всех моих встреч, и сервер генерирует 2 даты, подобные этой:
let date_1 = moment().startOf('day').utc();
let date_2 = moment().endOf('day').utc();
Конечно, проблема заключается в том, что date_1
и date_2
сначала генерируются на основе времени Нью-Йорка, котороеНа 4 часа больше, чем в Калифорнии, поэтому даже если я выполню запрос типа: SELECT * FROM some_table WHERE somedate BETWEEN date_1 AND date_2;
, я получу данные, которые по-прежнему не соответствуют запросам пользователя.
Разве я не должен знать часовой пояс человека или я должен построить API таким образом, чтобы клиент не мог просто запросить данные, но должен предоставить 2 даты?Неправильно ли серверу пытаться вычислить, сколько дней запрашивает пользователь?