Определение смещения часового пояса времени UTC в.Net

Серверная часть - это C# и SQL Server.

Я сохраняю время регистрации событий из разных часовых поясов в UTC в моей БД. Мне нужно заполнить глобально распределенный интерфейс, чтобы он локализовал зарегистрированное время UTC в зависимости от того, где расположен интерфейс, который будет известен, например, PT, ET. Это также должно обрабатывать летнее время, где я сталкиваюсь с трудностями.

Поскольку смещение UTC изменяется в зависимости от времени года из-за перехода на летнее время, есть ли способ узнать, что такое смещение UTC в C#, учитывая, что я знаю дату / время и часовой пояс.

1 ответ

Решение

есть ли способ узнать, что такое смещение UTC в C#, учитывая, что я знаю дату / время и часовой пояс

Технически вам не нужно узнавать эту информацию, о системных часах / календаре / о том, что вы должны позаботиться о ней. (Я уверен, что любой, кто работал над логикой даты и времени, засвидетельствует тот факт, что по меньшей мере нетривиально.)

В идеале, в любое время, когда вам нужно преобразовать часовой пояс, у вас есть три вещи:

  1. DateTime объект, представляющий значение для преобразования.
  2. TimeZoneInfo объект, представляющий известный текущий формат DateTime объект (в данном случае UTC).
  3. TimeZoneInfo объект, представляющий целевой часовой пояс.

Учитывая эти вещи, в любое время вы хотите отобразить DateTime для локализованного пользователя, вы бы использовали что-то вродеTimeZoneInfo.ConvertTime выполнить преобразование. В идеале это должно быть сделано как можно ближе к интерфейсу пользователя, чтобы логика поддержки всегда последовательно выполнялась в UTC.

Другие вопросы по тегам