HOW TO:建立沒有調整規則的時區
特定系統可能基於以下原因,而沒有應用程式所需的精確的時區資訊:
本機系統登錄中從未定義這個時區。
時區的資料已被修改或從登錄中移除。
這個時區存在,但是並沒有針對特定歷史期間之時區調整的精確資訊。
在這種情況下,您可以呼叫 CreateCustomTimeZone 方法以定義應用程式所需的時區。 您可以使用這個方法的多載,以建立包含或不含調整規則的時區。 如果該時區支援日光節約時間,您可以使用固定或浮動調整規則來定義調整方式 (如需這些用語的定義,請參閱時區概觀的<時區用語>一節)。
重要事項 |
---|
呼叫 CreateCustomTimeZone 方法所建立的自訂時區不會新增至登錄中。只能透過 CreateCustomTimeZone 方法呼叫所傳回的物件參考才能存取。 |
本主題說明如何建立不含調整規則的時區。 如果要建立支援日光節約時間調整規則的時區,請參閱 HOW TO:建立有調整規則的時區.
建立有調整規則的時區
定義時區的顯示名稱。
顯示名稱遵循相當程度的標準格式,其中時區的 Coordinated Universal Time (UTC) 位移會包含在括號中,後面接著識別時區的字串、該時區的一個或多個城市,或是該時區的一個或多個國家或地區。
定義時區的標準時間之名稱。 通常,這個字串也會當成時區的識別項使用。
如果您要使用和時區的標準名稱不同的識別項,請定義時區識別項。
將定義時區的 UTC 位移之 TimeSpan 物件個體化。 時間較 UTC 晚的時區,位移值是正的。 時間較 UTC 早的時區,位移值是負的。
呼叫 TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) 方法,將新時區具現化。
範例
下列範例會定義南極洲的茂森 (Mawson) 之自訂時區,這個時區沒有調整規則。
Dim displayName As String = "(GMT+06:00) Antarctica/Mawson Time"
Dim standardName As String = "Mawson Time"
Dim offset As TimeSpan = New TimeSpan(06, 00, 00)
Dim mawson As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
Console.WriteLine("The current time is {0} {1}", _
TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, mawson), _
mawson.StandardName)
string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new TimeSpan(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine("The current time is {0} {1}",
TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson),
mawson.StandardName);
指派給 DisplayName 屬性的字串遵循標準的格式,其中,時區的 UTC 位移後面接著易讀的時區描述。
編譯程式碼
這個範例需要:
將 System.Core.dll 的參考加入至專案中。
匯入下列命名空間:
Imports System.Collections.Generic Imports System.Collections.ObjectModel
using System.Collections.Generic; using System.Collections.ObjectModel;