DD.WellWorkover.Cloud/AsbCloudWebApi/Docs/about using DateTime[Offset].md

17 lines
1.8 KiB
Markdown
Raw Normal View History

## Проблема
Скважины и пользователи ЕЦП расположены на различных часовых поясах.
В БД время хранится только в UTC.
На страницах ЕЦП время везде должно отображаться в часовом поясе скважины.
Web Api должен понимать при обращении время как в UTC `2021-12-29T07:00:00Z`, так и с указанием часового пояса `2021-12-29T12:00:00+05`.
## Решение
В БД уже хранится часовой пояс скважины в таблице телеметрии.
На стороне backEnd публичные методы контроллеров и методы сервисов,
которые вызываются из контроллеров должны понимать параметры времени как тип DateTime, затем приводить его к UTC.
Если DateTime.Kind == unspecified, то считается что *это время указанное в часовом поясе скважины*.
При переходе на DateTimeOffset флаги isUTC не нужны
Даты в Model - используют DateTimeOffset.
Даты в Dto - используют DateTime без указания часового пояса во времени скважины.
При получении Dto от фронта с kind == unspecified дата приводится к UTC как будто она в часовом поясе скважины.
Перед отправкой клиенту в Dto все даты приводятся к часовому поясу скважины и kind устанавливается как unspecified.