Экономия времени в формате UTC без DST (момент) - PullRequest
1 голос
/ 30 октября 2019

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

У меня есть TimeStart и TimeEnd в базе данных, которые указывают рабочие часы. Проблема возникает, если я экономлю часы, пока это летнее время, а пока нет. Если я сохраню 09: 00-17: 00 15 октября, получится 07: 00-15: 00 (UTC), но если я добавлю рабочие часы сейчас, когда это не такЛетнее время это приведет к 08: 00 - 16: 00 (UTC). Я думал, что при переходе с UTC на мгновенный результат даст стабильный результат с учетом DST, но я ошибся.

Как лучше всего справиться с этим на интерфейсе / бэкэнде. Должен ли я вычесть добавленное время перехода на летнее время? Потому что использование момента для обработки преобразования в UTC не помогает, так как в любом случае это дает разницу в 1 час (теперь я подвергаю сомнению все, что я делал до сих пор со временем UTC, поскольку проблемы, вероятно, могут возникнуть из-за этой проблемы).

Спасибо

1 Ответ

1 голос
/ 30 октября 2019

Поскольку у меня нет необходимой репутации, чтобы просто оставить комментарий, я думаю, что напишу фактический ответ. (Отказ от ответственности: я на самом деле не работал с moment.js)

Я бы порекомендовал вам всегда хранить время в формате UTC в вашей базе данных. Конверсия должна происходить при отображении / хранении во внешнем интерфейсе.

Для получения дополнительной информации о том, как обрабатывать летнее время, я нашел этот замечательный вопрос с большим количеством ответов. Вы должны быть в состоянии применить множество вещей, упомянутых там, к любому стеку: Летнее время и рекомендации по часовым поясам

Учитывая детали в вопросе, трудно сказать вам, гдеваша ошибка в том, что вы все еще получаете неправильные значения.

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