作法:建立沒有調整規則的時區

應用程式所需的精確時區資訊,可能會因為以下數個原因,而不存在於特定系統上:

  • 從未在本機系統的登錄中定義過時區。

  • 已從登錄修改或移除時區的相關資料。

  • 時區存在,但沒有特定歷史時期之時區調整的準確資訊。

在這些情況下,您可以呼叫 CreateCustomTimeZone 方法,以定義應用程式所需的時區。 您可以使用此方法的多載來建立有或沒有調整規則的時區。 若時區支援日光節約時間,則您可使用固定或浮動調整規則來定義調整。 (如需了解這些字詞的定義,請參閱時區概觀中的 "Time Zone Terminology" 一節。)

重要

呼叫 CreateCustomTimeZone 方法所建立的自訂時區,不會新增至登錄。 相反地,自訂時區只能透過 CreateCustomTimeZone 方法呼叫所傳回的物件參考加以存取。

本主題顯示如何建立有調整規則的時區。 若要建立支援日光節約時間調整規則的時區,請參閱操作說明:建立沒有調整規則的時區

建立沒有調整規則的時區

  1. 定義時區的顯示名稱。

    顯示名稱會遵循相當標準的格式,其中時區與國際標準時間 (UTC) 的位移會以括弧括住且後面接著一個字串,來識別時區、時區中的一或多個城市,或時區中的一或多個國家或地區。

  2. 定義時區標準時間的名稱。 一般而言,此字串也用作時區的識別碼。

  3. 若想要使用與時區標準名稱不同的識別碼,請定義時區識別碼。

  4. 具現化定義時區與 UTC 之位移的 TimeSpan 物件。 時間比 UTC 晚的時區,時區位移為正數。 時間比 UTC 早的時區,時區位移為負數。

  5. 呼叫 TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) 方法以具現化新的時區。

範例

下列範例會定義南極大陸茂遜 (沒有調整規則) 的自訂時區。

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

指派給 DisplayName 屬性的字串會遵循標準格式,其中時區與 UTC 的位移後面會接著時區的易記描述。

編譯程式碼

這個範例需要:

  • 匯入下列命名空間:

    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    
    Imports System.Collections.Generic
    Imports System.Collections.ObjectModel
    
    

另請參閱