Как сохранить будущие даты для планирования в mongoDB с учетом перехода на летнее время - PullRequest
0 голосов
/ 24 марта 2020

Вот мой сценарий

мой API использует локальное время и дату, когда пользователи в последний раз могут отправлять свои работы.

Я хочу сохранить дату и время в локальном время вместе с часовым поясом, таким образом я могу применить смещение часового пояса для преобразования в UT C перед отправкой даты клиенту. Это должно работать, даже если летнее время изменяется после сохранения даты.

Но MongoDB сохраняет даты только в формате UT C, по крайней мере, с java -mon go, где оно преобразует местное время в UT C перед сохранением в базу данных. Я не могу сохранить свою дату без предварительного преобразования ее в UT C.

Итак, мой второй подход заключается в том, чтобы получить локальную дату из запроса и преобразовать ее в UT C на основе информации timeZone, которую я уже есть. Этот подход будет работать нормально, если только в сценарии, когда переход на летнее время изменился после сохранения даты, но до истечения этой даты.

например, локальная дата, полученная от клиента, составляет 2020-03-28 00:00, который находится в +4 UT C , Я конвертирую его в UT C и сохраняю как 2020-03-28T20:00:00Z. Но если летнее время меняется в течение этого периода, пользователи могут получить еще один час, чтобы представить свою работу.

Итак, мой вопрос: как мне справиться с таким сценарием, если я сохраню дату в UT C, или предложить что-то еще.

1 Ответ

1 голос
/ 24 марта 2020

В MongoDB вы можете сохранить как текущую дату, так и текущее смещение клиента от UT C. Вы можете напрямую вставлять или обновлять данные с клиента, вы будете хранить временную метку, основанную на часах пользователя, хотя она будет сохраняться как UT C вместе с текущим смещением клиента от UT C. Вы можете восстановить исходное местное время, применив сохраненное смещение:

Документация MongoDB

MongoDB сохраняет время в UT C по умолчанию и преобразует его любые представления местного времени в эту форму. Приложения, которые должны работать или сообщать о некотором неизмененном значении местного времени, могут хранить часовой пояс вместе с отметкой времени UT C и вычислять исходное местное время в своих логах приложений c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...