1. 程式人生 > 實用技巧 >.NET時區相關操作

.NET時區相關操作

TimeZoneInfo

TimeZoneInfo是一個關於時區的靜態類,可以使得我們方便的操作與時區相關的資訊
對於一個開放於全球的網站或服務,在時間上的顯示是一個問題,因為各個國家都會有所謂的時差,好在 .Net提供了 TimeZoneInfo 類來解決這個問題。
TimeZoneInfo 類的方法可用於將一個時區的時間轉換為其他任意時區的相應時間

靜態成員

  • CreateCustomTimeZone()使用應用程式提供的資料建立自定義時區。 CreateCustomTimeZone 方法建立在本地系統登錄檔中未定義的時區。然後可使用 ToSerializedString 屬性將時區物件的資訊儲存為字串,該字串可以以應用程式可訪問的某種格式儲存。使用 FromSerializedString 方法可將序列化字串轉換回 TimeZoneInfo 物件
  • FindSystemTimeZoneById()根據時區的識別符號例項化在系統登錄檔中定義的時區。
  • FromSerializedString()反序列化一個字串值,以重新建立先前已序列化的 TimeZoneInfo 物件。
  • GetSystemTimeZones()返回 TimeZoneInfo 物件的可列舉的 ReadOnlyCollection<(Of <(T>)>),它表示本地系統上可用的所有時區。
  • Local 屬性:例項化表示本地時區的 TimeZoneInfo 物件。
  • Utc 屬性:例項化表示 UTC 時區的 TimeZoneInfo 物件。

案例

TimeZoneInfo 的使用很簡單,一開始利用 FindSystemTimeZoneById 找到對應的 TimeZoneInfo 物件,就可以利用該物件來轉換時間。下列程式是示範如何將 UTC Time 轉為東京的當地間時。

TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
Console.WriteLine(string.Format("UTC Time:{0}", time.ToString()));
Console.WriteLine(string.Format("Tokyo Time:{0}", TimeZoneInfo.ConvertTime(time, TimeZoneInfo.Utc, timeZoneInfo)));

或許有人會問,該如何知道各個地區所對應的 id,其實利用 TimeZoneInfo.GetSystemtimeZones 就可以了。

var list =  TimeZoneInfo.GetSystemTimeZones();
            foreach (var timeZoneInfo in list)
            {
                Console.WriteLine(timeZoneInfo.DisplayName);
                Console.WriteLine(timeZoneInfo.Id);
            }

參考:
https://www.cnblogs.com/wuxiaoqian726/archive/2011/03/19/1988931.html