DYNAMIC_TIME_ZONE_INFORMATION 結構 (timezoneapi.h)
指定時區和動態日光節約時間的設定。
語法
typedef struct _TIME_DYNAMIC_ZONE_INFORMATION {
LONG Bias;
WCHAR StandardName[32];
SYSTEMTIME StandardDate;
LONG StandardBias;
WCHAR DaylightName[32];
SYSTEMTIME DaylightDate;
LONG DaylightBias;
WCHAR TimeZoneKeyName[128];
BOOLEAN DynamicDaylightTimeDisabled;
} DYNAMIC_TIME_ZONE_INFORMATION, *PDYNAMIC_TIME_ZONE_INFORMATION;
成員
Bias
這部電腦上目前的本地時間轉譯偏差 (以分鐘為單位)。 偏差是國際標準時間 (UTC) 和當地時間之間的差異,以分鐘為單位。 UTC 與當地時間之間的所有翻譯都是以下列公式為基礎:
UTC = 當地時間 + 偏差
此成員是必要的。
StandardName[32]
標準時間的描述。 例如,「EST」 可能表示東部標準時間。 GetDynamicTimeZoneInformation函式會保持不變傳回字串。 此字串可以是空的。
StandardDate
SYSTEMTIME結構,包含從日光節約時間轉換為標準時間的日期和時間在此作業系統上。 如果時區不支援日光節約時間,或呼叫端需要停用日光節約時間,則 SYSTEMTIME結構中的wMonth成員必須是零。 如果指定這個日期,也必須指定這個結構的 DaylightDate 成員。 否則,系統會假設時區資料無效,且不會套用任何變更。
若要選取月份中的正確日期,請將 wYear 成員設定為零、 wHour 和 wMinute 成員設為轉換時間、 將 wDayOfWeek 成員設定為適當的工作日, 而 wDay 成員表示當月內的星期幾 (1 到 5,其中 5 表示當月的最後一次發生,如果當周的日期未發生 5 次) 。
使用此標記法,在 4 月的第一個星期日指定 02:00,如下所示: wHour = 2、 wMonth = 4、 wDayOfWeek = 0、 wDay = 1。 在 10 月的最後一個星期四指定 02:00,如下所示: wHour = 2、 wMonth = 10、 wDayOfWeek = 4、 wDay = 5。
如果 wYear 成員不是零,轉換日期是絕對的;它只會發生一次。 否則,它是每年發生的相對日期。
StandardBias
在標準時間期間發生的當地時間翻譯期間所要使用的偏差值。 如果未提供 StandardDate 成員的值,則會忽略這個成員。
此值會新增至 Bias 成員的值,以形成標準時間期間所使用的偏差。 在大部分時區中,這個成員的值是零。
DaylightName[32]
日光節約時間的描述, (DST) 。 例如,「PDT」 可能表示太平洋日光節約時間。 GetDynamicTimeZoneInformation函式會保持不變傳回字串。 此字串可以是空的。
DaylightDate
SYSTEMTIME結構,包含從標準時間轉換到日光節約時間在此作業系統上發生的日期和時間。 如果時區不支援日光節約時間,或呼叫端需要停用日光節約時間,則 SYSTEMTIME結構中的wMonth成員必須是零。 如果指定這個日期,也必須指定這個結構中的 StandardDate 成員。 否則,系統會假設時區資料無效,且不會套用任何變更。
若要選取月份中的正確日期,請將 wYear 成員設定為零、 wHour 和 wMinute 成員設為轉換時間、 將 wDayOfWeek 成員設定為適當的工作日, 而 wDay 成員表示當月內的星期幾 (1 到 5,其中 5 表示當月的最後一次發生,如果當周的日期未發生 5 次) 。
如果 wYear 成員不是零,轉換日期是絕對的;它只會發生一次。 否則,它是每年發生的相對日期。
DaylightBias
在日光節約時間期間發生的當地時間翻譯期間所要使用的偏差值。 如果未提供 DaylightDate 成員的值,則會忽略這個成員。
此值會新增至 Bias 成員的值,以形成日光節約時間期間所使用的偏差。 在大部分時區中,此成員的值是 –60。
TimeZoneKeyName[128]
本機電腦上的時區登錄機碼名稱。 如需詳細資訊,請參閱<備註>。
DynamicDaylightTimeDisabled
指出是否停用動態日光節約時間。 將此成員設定為 TRUE 會停用動態日光節約時間,導致系統使用一組固定的轉換日期。
若要還原動態日光節約時間,請使用DynamicDaylightTimeDisabled設定為FALSE呼叫SetDynamicTimeZoneInformation函式。 系統會讀取下一次更新、下一次系統重新開機或行事歷年度結束的轉換日期, (第一次傳回。)
呼叫GetDynamicTimeZoneInformation函式時,如果時區是使用SetTimeZoneInformation函式來設定,而不是SetDynamicTimeZoneInformation,或如果使用者已在 主控台中使用日期和時間應用程式停用此功能,則此成員為TRUE。
若要停用日光節約時間,請將此成員設定為 TRUE、清除 StandardDate 和 DaylightDate 成員,然後呼叫 SetDynamicTimeZoneInformation。 若要還原日光節約時間,請使用DynamicDaylightTimeDisabled設定為FALSE呼叫SetDynamicTimeZoneInformation。
備註
動態日光節約時間支援時區,其日光節約時間的界限會從年份變更為年份。 這項功能可讓您更輕鬆地更新系統,特別是針對事先知道每年 DST 界限的地區設定。 更新時區之後,目前的時區設定會套用至所有時間作業,即使發生問題的時間在時區變更之前也一樣。 因此,最好儲存 UTC 時間,並將其轉換成目前的當地時區。
您可以使用 SetDynamicTimeZoneInformation 函式來設定目前年份的轉換日期。 若要設定未來的轉換日期,您必須將專案新增至登錄資料。 動態日光節約時間的設定會儲存在下列登錄機碼中:
HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Time Zones time_zone_name Dynamic DST
每個 Dynamic DST 機碼都包含下列登錄值。
登錄值 | 類型 | Description |
---|---|---|
FirstEntry | REG_DWORD | 資料表中的第一年。 |
LastEntry | REG_DWORD | 資料表中的最後一年。 |
year1 | REG_BINARY |
下列時區資訊。
|
year2 | REG_BINARY | REG_TZI_FORMAT結構。 |
渴望 | REG_BINARY | REG_TZI_FORMAT結構。 |
如需 時區 索引鍵中其他值的詳細資訊,請參閱 TIME_ZONE_INFORMATION。
StandardName和DaylightName都會根據目前的使用者預設 UI 語言進行當地語系化。
規格需求
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
標頭 | timezoneapi.h (包含 Timezoneapi.h、Windows.h) |