.NET Получить смещение часового пояса по имени часового пояса. - PullRequest
25 голосов
/ 05 июня 2010

В базе данных я храню все даты / время в UTC.

Я знаю имя часового пояса пользователя (например, "Восточное стандартное время США").

Чтобы отобразить правильное время, я подумал, что мне нужно добавить смещение часового пояса пользователя к дате / времени UTC. Но как получить смещение часового пояса по имени часового пояса?

Спасибо!

Ответы [ 3 ]

40 голосов
/ 05 июня 2010

Вы можете использовать TimeZoneInfo.FindSystemTimeZoneById, чтобы получить объект TimeZoneInfo, используя предоставленный Id, затем TimeZoneInfo.GetUtcOffset из этого:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time");
TimeSpan offset = tzi.GetUtcOffset( myDateTime);
4 голосов
/ 05 июня 2010

Вы можете использовать метод TimeZoneInfo класса *1003* GetSystemTimeZones () , чтобы получить список всех часовых поясов, настроенных на вашем сервере, и сопоставить его с одним из ваших клиентов.

Хотя почему у вас есть часовые пояса в формате "Восточное стандартное время США"? Откуда это взялось?

2 голосов
/ 15 января 2014

Вместо того, чтобы делать какое-либо ручное добавление, вы должны воспользоваться ConvertTime методом TimeZoneInfo, который будет обрабатывать преобразование вашей даты на основе указанной вами временной зоны.

var localizedDateTime = TimeZoneInfo.ConvertTime(yourDateTime, localTimeZoneInfo);
...