2012-07-24 75 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