169 похожих чатов

Помогите разобрать как правильно обработать задачу по часовым поясам. Мы записываем

события и потом отображаем их список.

Предположим сейчас 1 октября 00:00 ночи, мы в Москве (+3) . Мы открыли приложение и записываем событие. Так как время нам отображается то мы хотели бы видеть актуальное время - наше локальное. Вот мы записали, перевели в UTC, которое будет 29 сентября в 21:00.

Теперь делаем выборку операций за месяц. Берем локальный месяц и переводим в UTC, выборка начнется от 29 сентября с 21:00. Пока все хорошо.

Теперь перелетаем в Нью-Йорк с часовым поясом -4 и делаем тоже выборку за месяц, переводя локальный месяц в UTC. Выборка начинается с 1 октября с 04:00. Получается у нас не войдет событие записанное в Москве в события, которые мы читаем в Нью-Йорке.

Что с этим делать, как решить дилему?

7 ответов

19 просмотров

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

Norim- Автор вопроса
Serge Rumyantsev
Тут кажется вы сами себя запутали. 1) Все события ...

Да, но разве я как пользователь не ожидал бы видеть ту же операцию в том же месяце не смотря на смену часового пояса?

Вы ожидаете отображение в том часовом поясе, в котором находитесь же?

Norim
Да, но разве я как пользователь не ожидал бы видет...

Если речь идет об отчетности за месяц по бирже скажем, или по расходу данных, то там всегда берется с первого по последний час месяца по времени сервера или биржи. Прыгай по земле сколько хочешь но в отчет попадет по одному времени.

Norim- Автор вопроса
Serge Rumyantsev
Вы ожидаете отображение в том часовом поясе, в кот...

Ну верно, да, при записи. Но вот я перелетел в Нью-Йорк, разве я не удивлюсь, увидев, что операция не отобразится в выборке за месяц? Думал бы, например, почему она пропала с текущего месяца? 🤔

Norim
Ну верно, да, при записи. Но вот я перелетел в Нью...

Пропала, так как ты в другом часовом поясе, где эта операция (момент времени), отнесена к другому месяцу.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта