.NET時區相關操作
阿新 • • 發佈:2020-12-16
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