C# - десериализация значений DateTime и DateTimeOffset в UTC и местное время по мере необходимостиC#

Место общения программистов C#
Anonymous
C# - десериализация значений DateTime и DateTimeOffset в UTC и местное время по мере необходимости

Сообщение Anonymous »

В настоящее время я работаю над полнофункциональным приложением, которому никогда не приходилось учитывать часовой пояс, но похоже, что вскоре ему придется быть немного более универсальным с точки зрения знания местного часового пояса, перехода на летнее время и т. д. .
Я подумал, что основой решения могут стать следующие шаги:
  • Разрешить интерфейсную часть приложение использовать местное время машины (для выбора из компонентов выбора даты и времени и т. д.).
  • Когда данные отправляются в API, будь то для создания или запроса записи, любые значения DateTime или DateTimeOffset (оба используются в настоящее время) отправляются по местному времени в полезных данных JSON, но затем, после получения, преобразуются из местного времени в UTC. Это будет означать, что он может быть в форме UTC для использования в любой бизнес-логике или для хранения в БД.
  • В тот момент, когда любые данные возвращаются из API клиенту (например, запрос GET), клиент получит данные в формате UTC, а затем преобразует их в местное время машины для отображения и т. д.
Я попытался выполнить это, используя некоторые написанные мною методы расширения, которые проверяли бы члены десериализованных запросов/ответов и соответствующим образом корректировали любые поля DateTime или DateTimeOffset. В достаточно простых случаях это работало нормально, но все чаще становилось минным полем, поскольку объекты становились все более сложными и включали вложенные объекты, перечислимые объекты и т. д.
Что мне сейчас интересно, если процесс десериализации JSON будет иметь возможность последовательно десериализовать значения в желаемый часовой пояс. Я осмотрелся, но не нашел ничего конкретного, поэтому задался вопросом, может ли вопрос здесь дать свежий взгляд.
Я открыт для любых идей, поэтому, если Подход, который я изложил выше, не идеален, или я что-то упустил из виду, дайте мне знать!
Спасибо,
Марк

Подробнее здесь: https://stackoverflow.com/questions/784 ... al-time-as

Вернуться в «C#»