события и потом отображаем их список.
Предположим сейчас 1 октября 00:00 ночи, мы в Москве (+3) . Мы открыли приложение и записываем событие. Так как время нам отображается то мы хотели бы видеть актуальное время - наше локальное. Вот мы записали, перевели в UTC, которое будет 29 сентября в 21:00.
Теперь делаем выборку операций за месяц. Берем локальный месяц и переводим в UTC, выборка начнется от 29 сентября с 21:00. Пока все хорошо.
Теперь перелетаем в Нью-Йорк с часовым поясом -4 и делаем тоже выборку за месяц, переводя локальный месяц в UTC. Выборка начинается с 1 октября с 04:00. Получается у нас не войдет событие записанное в Москве в события, которые мы читаем в Нью-Йорке.
Что с этим делать, как решить дилему?
Тут кажется вы сами себя запутали. 1) Все события вы пишите в UTC+0, что по сути хорошо. 2) При отображении пользователю, вы переводите в его часовой пояс и отображаете. Далее путаница происходит в интерпретации для другого часового пояса, возьмем событие по мск (+3) 1го числа в 00 часов. По гринвичу оно произойдет в 21 час ночи 31го предыдущего месяца, а в Нью-Йорке (-4) оно произойдет в 17 часов 31го числа предыдущего месяца.
Да, но разве я как пользователь не ожидал бы видеть ту же операцию в том же месяце не смотря на смену часового пояса?
Вы ожидаете отображение в том часовом поясе, в котором находитесь же?
Если речь идет об отчетности за месяц по бирже скажем, или по расходу данных, то там всегда берется с первого по последний час месяца по времени сервера или биржи. Прыгай по земле сколько хочешь но в отчет попадет по одному времени.
Ну верно, да, при записи. Но вот я перелетел в Нью-Йорк, разве я не удивлюсь, увидев, что операция не отобразится в выборке за месяц? Думал бы, например, почему она пропала с текущего месяца? 🤔
Пропала, так как ты в другом часовом поясе, где эта операция (момент времени), отнесена к другому месяцу.
Обсуждают сегодня