2013-12-13 4 views
0

Мы построили выпадающий список часовых поясов с помощью следующих встроенных в .net методов:.»Как найти смещение UTC от TimeZoneID?

foreach (TimeZoneInfo timeZone in timeZones) 
     { 
      SelectListItem li = new SelectListItem(); 
      li.Value = timeZone.Id; 
      li.Text = timeZone.DisplayName; 
      if (website.TimeZone == timeZone.Id) 
      { 
       li.Selected = true; 
      } 
      adminWebsiteVM.TimeZoneList.Add(li);   
     } 

Затем сохраните timeZone.Id (который является строка) в нашей БД я выбрал для хранения идентификатор вместо смещения, потому что смещение изменяется с летним временем.

Мой вопрос: Как мне получить смещение UTC с использованием свойства timeZone.Id позже? Я не вижу никаких методов, которые допускают такую ​​вещь.

+1

ли вы действительно хотите отобразить смещение, или вы просто пытаетесь конвертировать в/из UTC? Если это последний, проверьте 'TimeZoneInfo.ConvertTimeToUtc()' и 'TimeZoneInfo.ConvertTimeFromUtc()'. –

+0

Спасибо. Мой сервер находится в UTC. Таким образом, они ничего не делают, поскольку они работают в серверное время. Я пытаюсь работать с часовым поясом пользователя, который я должен вычислить из смещения временной зоны. Но поскольку изменения в отношении часовой пояс меняются, я подумал, что было бы разумно получить смещение по мере необходимости. Вот что я ищу. –

ответ

2

Образец кода для этого метода сделает все, что вы захотите. Я могу внести некоторые изменения с помощью небольшого экзамена но мне нужно think the msdn.

В принципе вы можете использовать:

TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"); 
TimeSpan offset = timeZone.GetUtcOffset(DateTime time); 
+0

Спасибо. Ценить это! –

Смежные вопросы