Определение смещения часового пояса времени UTC в.Net
Серверная часть - это C# и SQL Server.
Я сохраняю время регистрации событий из разных часовых поясов в UTC в моей БД. Мне нужно заполнить глобально распределенный интерфейс, чтобы он локализовал зарегистрированное время UTC в зависимости от того, где расположен интерфейс, который будет известен, например, PT, ET. Это также должно обрабатывать летнее время, где я сталкиваюсь с трудностями.
Поскольку смещение UTC изменяется в зависимости от времени года из-за перехода на летнее время, есть ли способ узнать, что такое смещение UTC в C#, учитывая, что я знаю дату / время и часовой пояс.
1 ответ
есть ли способ узнать, что такое смещение UTC в C#, учитывая, что я знаю дату / время и часовой пояс
Технически вам не нужно узнавать эту информацию, о системных часах / календаре / о том, что вы должны позаботиться о ней. (Я уверен, что любой, кто работал над логикой даты и времени, засвидетельствует тот факт, что по меньшей мере нетривиально.)
В идеале, в любое время, когда вам нужно преобразовать часовой пояс, у вас есть три вещи:
DateTime
объект, представляющий значение для преобразования.TimeZoneInfo
объект, представляющий известный текущий форматDateTime
объект (в данном случае UTC).TimeZoneInfo
объект, представляющий целевой часовой пояс.
Учитывая эти вещи, в любое время вы хотите отобразить DateTime
для локализованного пользователя, вы бы использовали что-то вродеTimeZoneInfo.ConvertTime
выполнить преобразование. В идеале это должно быть сделано как можно ближе к интерфейсу пользователя, чтобы логика поддержки всегда последовательно выполнялась в UTC.