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 メンバーは 0 である必要があります。 この日付を指定する場合は、この構造体の DaylightDate メンバーも指定する必要があります。 それ以外の場合、システムはタイム ゾーン データが無効であると想定し、変更は適用されません。
月の正しい日を選択するには、 wYear メンバーを 0 に設定し、 wHour メンバーと wMinute メンバーを移行時間に設定し、 wDayOfWeek メンバーを適切な平日に設定し、 wDay メンバーを設定して月内の曜日の発生を示します (1 から 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 メンバーが 0 でない場合、切り替え日は絶対です。1 回だけ発生します。 それ以外の場合は、毎年発生する相対日付です。
StandardBias
標準時に発生する現地時刻の変換中に使用されるバイアス値。 StandardDate メンバーの値が指定されていない場合、このメンバーは無視されます。
この値は、標準時に使用されるバイアスを形成するために Bias メンバーの値に追加されます。 ほとんどのタイム ゾーンでは、このメンバーの値は 0 です。
DaylightName[32]
夏時間 (DST) の説明。 たとえば、"PDT" は太平洋夏時間を示します。 文字列は、 GetDynamicTimeZoneInformation 関数によって変更されずに返されます。 この文字列は空にすることができます。
DaylightDate
このオペレーティング システムで標準時から夏時間への切り替えが行われる日時と現地時刻を含む SYSTEMTIME 構造体。 タイム ゾーンで夏時間がサポートされていない場合、または呼び出し元が夏時間を無効にする必要がある場合、SYSTEMTIME 構造体の wMonth メンバーは 0 である必要があります。 この日付を指定する場合は、この構造体の StandardDate メンバーも指定する必要があります。 それ以外の場合、システムはタイム ゾーン データが無効であると想定し、変更は適用されません。
月の正しい日を選択するには、 wYear メンバーを 0 に設定し、 wHour メンバーと wMinute メンバーを移行時間に設定し、 wDayOfWeek メンバーを適切な平日に設定し、 wDay メンバーを設定して月内の曜日の発生を示します (1 から 5 は、週のその日が 5 回発生しない場合、月の最後の発生を示します)。
wYear メンバーが 0 でない場合、切り替え日は絶対です。1 回だけ発生します。 それ以外の場合は、毎年発生する相対日付です。
DaylightBias
夏時間中に発生する現地時刻の変換中に使用されるバイアス値。 DaylightDate メンバーの値が指定されていない場合、このメンバーは無視されます。
この値は、夏時間中に使用されるバイアスを形成するために Bias メンバーの値に追加されます。 ほとんどのタイム ゾーンでは、このメンバーの値は -60 です。
TimeZoneKeyName[128]
ローカル コンピューター上のタイム ゾーン レジストリ キーの名前。 詳細については、「解説」を参照してください。
DynamicDaylightTimeDisabled
動的夏時間を無効にするかどうかを示します。 このメンバーを TRUE に設定すると、動的夏時間が無効になり、システムで固定の切り替え日セットが使用されます。
動的夏時間を復元するには、DynamicDaylightTimeDisabled を FALSE に設定して SetDynamicTimeZoneInformation 関数を呼び出します。 システムは、次回の更新、次のシステム再起動、または暦年の終わり (どちらか早い方) に、現在の年の移行日を読み取ります。
GetDynamicTimeZoneInformation 関数を呼び出すとき、このメンバーは、SetDynamicTimeZoneInformation ではなく SetTimeZoneInformation 関数を使用してタイム ゾーンが設定された場合、またはユーザーがコントロール パネルの Date and Time アプリケーションを使用してこの機能を無効にした場合に 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
各 動的 DST キーには、次のレジストリ値が含まれます。
レジストリ値 | Type | 説明 |
---|---|---|
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 アプリ] |
Header | timezoneapi.h (Timezoneapi.h、Windows.h を含む) |