2012-07-24 41 views

回答

6

这假定timeKind = DateTimeKind.Utc

你可以使用ConvertTimeFromUtc

TimeZoneInfo.ConvertTimeFromUtc(time, userTimeZone); 

或者TimeZoneInfo.ConvertTime

TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, userTimeZone); 

你可能会想看看关于TimeZoneInfo.ConvertTime MSDN文章该方法的细节。

也许值得关注converting between time zones on MSDN。这比你想象的更复杂。

+0

非常感谢!一个后续问题。如果我想存储用户选择的时区列表,那么TimeZoneInfo的哪个属性最好存储在DropDownCtrl值中? – ahmd0 2012-07-24 03:14:13

+0

似乎时区的ID是一个合理的属性 – 2012-07-24 03:16:59

+0

我唯一关心的是ID是一个字符串,像“太平洋标准时间(墨西哥)”,而不仅仅是一个数字。我有点担心本地化? – ahmd0 2012-07-24 03:19:49

2

要获得系统中的时区列表,您可以使用TimeZoneInfo.GetSystemTimeZones()。它将为您的系统提供所有可用时区的列表。

 List<TimeZoneInfo> lstTZI = TimeZoneInfo.GetSystemTimeZones().ToList(); 

因为它是ReadOnlyCollection。现在您可以将此源与您的DropDownCntrl绑定。

+0

不错的加法。谢谢。只是好奇,有没有办法在用户的网络浏览器中选择一个时区? – ahmd0 2012-07-24 03:34:33

+0

使用TimeZone.CurrentTimeZone获取当前时区,并使用列表lstTZI中的标准名称查找它。 – Alok 2012-07-24 07:13:43