2009-08-10 49 views

回答

1

真的,你想爲這個.NET 3.5 ...

(我知道你問到.NET 2.0,但是這回答可能會有人在將來尋找這個話題)

TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById(
    "US Mountain Standard Time"); 
DateTime utc = DateTime.UtcNow; 
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utc, mountain); 

在那之前...疼痛。您可以維護自己的偏移量列表,但是您必須擔心DST。

2

不幸的是,使用.NET 2.0時,你大部分都被塞進了內存中。您需要使用P/Invoke來創建TimeZone類的實例。從.NET 3.5開始,它好得多 - TimeZoneInfo允許您獲取非本地區域。我似乎記得後者對歷史時區信息也提供了更好的支持,而不僅僅是當DST發生變化時的一對規則。

您可以使用GetTimeZoneInformation獲得信息,但這相對難看。可能有一些方法可以使用P/Invoke來爲您進行轉換...雖然它仍然可能很毛茸茸。

要求使用.NET 2.0有多堅定?你會保存自己很多使用.net 3.5麻煩 ...

0

寫下面的方法,所以可以通過調用它來輕鬆轉換。 它爲印度標準時間

public DateTime IndianStandard(DateTime currentDate) 
{ 
    TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 
    DateTime utc = currentDate; 
    return TimeZoneInfo.ConvertTimeFromUtc(utc, mountain); 
} 
相關問題