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);
}
}