.NET Получить смещение временной зоны по имени часового пояса
В базе данных я сохраняю все дату/время в UTC.
Я знаю имя часового пояса пользователя (например, "Восточное стандартное время США" ).
Чтобы отобразить правильное время, я думал, что мне нужно добавить смещение часового пояса пользователя к дате/времени UTC. Но как мне получить смещение временной зоны по имени часового пояса?
Спасибо!
Ответы
Ответ 1
Вы можете использовать TimeZoneInfo.FindSystemTimeZoneById
, чтобы получить объект TimeZoneInfo
, используя предоставленный идентификатор, а затем TimeZoneInfo.GetUtcOffset
:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
TimeSpan offset = tzi.GetUtcOffset( myDateTime);
Ответ 2
Вы можете использовать TimeZoneInfo класс GetSystemTimeZones(), чтобы получить список всех часовых поясов, настроенных на вашем сервере, и сопоставить их с тем, который был у вашего клиента.
Хотя у вас есть временные интервалы в формате "Восточное стандартное время США"? Откуда это взялось?
Ответ 3
Вместо того, чтобы выполнять ручное добавление, вы должны использовать метод ConvertTime
TimeZoneInfo
, который будет обрабатывать преобразование вашей даты на основе указанного вами часового пояса.
var localizedDateTime = TimeZoneInfo.ConvertTime(yourDateTime, localTimeZoneInfo);