TimeZoneInfo抓世界其他時區的時間

  • 3464
  • 0
  • C#
  • 2008-11-07

TimeZoneInfo是.NET 3.5的新物件

微軟對這個類別的說明是表示世界的任意時區

這點就感覺就比較好玩了

馬上就動手寫code來試看看

TimeZoneInfo這個類別大部分的方法都圍繞在比對UTC時間來判斷系統中其他時區的時間

TimeZoneInfo是.NET 3.5的新物件

微軟對這個類別的說明是表示世界的任意時區

這點就感覺就比較好玩了

馬上就動手寫code來試看看

TimeZoneInfo這個類別大部分的方法都圍繞在比對UTC時間來判斷系統中其他時區的時間

例如取得墨西哥時間:

 

TimeZoneInfo MexicoTimeInfo = TimeZoneInfo.FindSystemTimeZoneById("Mexico Standard Time 2");
Console.WriteLine(TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, MexicoTimeInfo));

 

這邊的FindSystemTimeZoneById的ID要比對的ID如果不清楚可以foreach來列出來比對

例如:

foreach (TimeZoneInfo timeZone in TimeZoneInfo.GetSystemTimeZones()) {
    //該時間區域ID 
    Console.WriteLine(timeZone.Id);
    //區域名稱
    Console.WriteLine(timeZone.StandardName);
    //與世界標準時間差
    Console.WriteLine(timeZone.BaseUtcOffset.ToString());
    //該時間區域時間         
    DateTime CurrentDateTime = DateTime.Now.AddHours(timeZone.BaseUtcOffset.Hours);
    Console.WriteLine(CurrentDateTime);
}

或是到註冊表裡的

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

就可以找到時區的ID了

這邊cloudio順便列出一些好用的方法

如果您想取得跟本地時間相同的時區可以這樣取:

 

DateTimeOffset LocalDataTime = DateTime.Now;
foreach (TimeZoneInfo timeZone in TimeZoneInfo.GetSystemTimeZones()) {
    if (timeZone.GetUtcOffset(LocalDataTime.DateTime).Equals((TimeSpan)LocalDataTime.Offset)) {
        Console.WriteLine(timeZone.StandardName);
    }
}

TimeZoneInfo 類別

尋找定義於本機系統的時區