タイム ゾーンの概要Time zone overview

TimeZoneInfo クラスは、タイムゾーンに対応したアプリケーションの作成を簡略化します。The TimeZoneInfo class simplifies the creation of time zone-aware applications. TimeZone クラスは、ローカルタイムゾーンと世界協定時刻 (UTC) の操作をサポートします。The TimeZone class supports working with the local time zone and Coordinated Universal Time (UTC). TimeZoneInfo クラスは、これらの両方のゾーンと、レジストリで定義されている情報に関するタイムゾーンの両方をサポートします。The TimeZoneInfo class supports both of these zones as well as any time zone about which information is predefined in the registry. また、TimeZoneInfo を使用して、システムに関する情報がないカスタムタイムゾーンを定義することもできます。You can also use TimeZoneInfo to define custom time zones that the system has no information about.

タイムゾーンの基本Time zone essentials

タイム ゾーンは、同じ時刻が使用されている地域です。A time zone is a geographical region in which the same time is used. 常にではありませんが、通常、隣接するタイム ゾーンは 1 時間違いです。Typically, but not always, adjacent time zones are one hour apart. 世界のタイム ゾーンの時刻は、世界協定時刻 (UTC) からのオフセットとして表されます。The time in any of the world's time zones can be expressed as an offset from Coordinated Universal Time (UTC).

世界のタイム ゾーンの多くは、夏時間をサポートしています。Many of the world's time zones support daylight saving time. 夏時間では、春や初夏には時刻を 1 時間進め、晩夏や秋には通常 (または標準) の時間に戻すことで、日中の時間を最大化しようと試みます。Daylight saving time tries to maximize daylight hours by advancing the time forward by one hour in the spring or early summer, and returning to the normal (or standard) time in the late summer or fall. こうした標準時間前後の変更は、調整規則と呼ばれます。These changes to and from standard time are known as adjustment rules.

特定のタイム ゾーンの夏時間前後の移行は、固定調整規則または浮動調整規則で定義できます。The transition to and from daylight saving time in a particular time zone can be defined either by a fixed or a floating adjustment rule. 固定調整規則では、毎年、夏時間前後の移行が行われる特定の日付を設定します。A fixed adjustment rule sets a particular date on which the transition to or from daylight saving time occurs each year. たとえば、毎年 10 月 25 日に行われる夏時間から標準時間への移行は、固定調整規則に従います。For example, a transition from daylight saving time to standard time that occurs each year on October 25 follows a fixed adjustment rule. 浮動調整規則の方がはるかに一般的です。浮動調整規則では、夏時間への移行、または夏時間からの移行について特定の月の特定の週の特定の曜日が設定されます。Much more common are floating adjustment rules, which set a particular day of a particular week of a particular month for the transition to or from daylight saving time. たとえば、3 月の第 3 日曜日に行われる標準時間から夏時間への移行は、浮動調整規則に従います。For example, a transition from standard time to daylight saving time that occurs on the third Sunday of March follows a floating adjustment rule.

調整規則をサポートするタイム ゾーンの場合、夏時間前後の移行によって、2 つの変則的な時刻が生じます。無効な時刻とあいまいな時刻です。For time zones that support adjustment rules, the transition to and from daylight saving time creates two kinds of anomalous times: invalid times and ambiguous times. 無効な時刻は、標準時間から夏時間への移行で生じる存在しない時刻です。An invalid time is a nonexistent time created by the transition from standard time to daylight saving time. たとえば、移行が特定の日付の午前 2:00 に行われ、For example, if this transition occurs on a particular day at 2:00 A.M. 時刻が午前 3:00 に変更される場合、午前 2:00 からand causes the time to change to 3:00 A.M., each time interval between 2:00 A.M. 午前 2:59:99 までの時刻はand 2:59:99 A.M. 無効です。is invalid. あいまいな時刻は、1 つのタイム ゾーンで 2 つの時刻にマップできる時刻です。An ambiguous time is a time that can be mapped to two different times in a single time zone. あいまいな時刻は夏時間から標準時間への移行で生じます。It is created by the transition from daylight saving time to standard time. たとえば、移行が特定の日付の午前 2:00 に行われ、For example, if this transition occurs on a particular day at 2:00 A.M. 時刻が午前 1:00 に変更される場合、午前 1:00 からand causes the time to change to 1:00 A.M., each time interval between 1:00 A.M. 午前 1:59:99 までの時刻はand 1:59:99 A.M. 標準時間または夏時間のいずれにでも解釈できます。can be interpreted as either a standard time or a daylight saving time.

タイムゾーンの用語Time zone terminology

次の表は、タイム ゾーンを使用し、タイム ゾーン対応アプリケーションを開発するときに一般的に使用される用語の定義一覧です。The following table defines terms commonly used when working with time zones and developing time zone-aware applications.

用語Term 定義Definition
調整規則Adjustment rule 標準時間から夏時間へ、および夏時間から標準時間への移行が行われるタイミングを定義した規則。A rule that defines when the transition from standard time to daylight saving time and back from daylight saving time to standard time occurs. 各調整規則には、規則が適用されるタイミングを定義する開始日と終了日があります (たとえば、調整規則が1986年1月1日から2006年12月31日までに設定されている場合)、デルタ (次のアプリケーションの結果として標準時間が変化する時間の長さ)。[e 調整規則])、および調整期間中に移行が行われる特定の日付と時刻に関する情報。Each adjustment rule has a start and end date that defines when the rule is in place (for example, the adjustment rule is in place from January 1, 1986, to December 31, 2006), a delta (the amount of time by which the standard time changes as a result of the application of the adjustment rule), and information about the specific date and time that the transitions are to occur during the adjustment period. 移行は、固定規則または浮動規則に従う可能性があります。Transitions can follow either a fixed rule or a floating rule.
あいまいな時刻Ambiguous time 1 つのタイム ゾーンで 2 つの時刻にマップできる時刻です。A time that can be mapped to two different times in a single time zone. これは、あるタイム ゾーンの夏時間から標準時間に移行する際など、時計の時刻を前に戻すときに発生します。It occurs when the clock time is adjusted back in time, such as during the transition from a time zone's daylight saving time to its standard time. たとえば、移行が特定の日付の午前 2:00 に行われ、For example, if this transition occurs on a particular day at 2:00 A.M. 時刻が午前 1:00 に変更される場合、午前 1:00 からand causes the time to change to 1:00 A.M., each time interval between 1:00 A.M. 午前 1:59:99 までの時刻はand 1:59:99 A.M. 標準時間または夏時間のいずれにでも解釈できます。can be interpreted as either a standard time or a daylight saving time.
固定規則Fixed rule 夏時間前後の移行について特定の日付を設定する調整規則。An adjustment rule that sets a particular date for the transition to or from daylight saving time. たとえば、毎年 10 月 25 日に行われる夏時間から標準時間への移行は、固定調整規則に従います。For example, a transition from daylight saving time to standard time that occurs each year on October 25 follows a fixed adjustment rule.
浮動規則Floating rule 浮動調整規則の方がはるかに一般的です。浮動調整規則では、夏時間への移行、または夏時間からの移行について特定の月の特定の週の特定の曜日が設定されます。An adjustment rule that sets a particular day of a particular week of a particular month for the transition to or from daylight saving time. たとえば、3 月の第 3 日曜日に行われる標準時間から夏時間への移行は、浮動調整規則に従います。For example, a transition from standard time to daylight saving time that occurs on the third Sunday of March follows a floating adjustment rule.
無効な時刻Invalid time 標準時間から夏時間への移行中に生じる存在しない時刻。A nonexistent time that is an artifact of the transition from standard time to daylight saving time. 無効な時刻は、あるタイム ゾーンの標準時間から夏時間に移行する際など、時計の時刻を前に進めるときに発生します。It occurs when the clock time is adjusted forward in time, such as during the transition from a time zone's standard time to its daylight saving time. たとえば、移行が特定の日付の午前 2:00 に行われ、For example, if this transition occurs on a particular day at 2:00 A.M. 時刻が午前 3:00 に変更される場合、午前 2:00 からand causes the time to change to 3:00 A.M., each time interval between 2:00 A.M. 午前 2:59:99 までの時刻はand 2:59:99 A.M. 無効です。is invalid.
移行時間Transition time 特定のタイム ゾーンで実施される夏時間と標準時間の切り替えなど、特定の時間切り替えに関する情報。Information about a specific time change, such as the change from daylight saving time to standard time or vice versa, in a particular time zone.

タイムゾーンと TimeZoneInfo クラスTime zones and the TimeZoneInfo class

.NET では、TimeZoneInfo オブジェクトはタイムゾーンを表します。In .NET, a TimeZoneInfo object represents a time zone. TimeZoneInfo クラスには、TimeZoneInfo.AdjustmentRule オブジェクトの配列を返す GetAdjustmentRules メソッドが含まれています。The TimeZoneInfo class includes a GetAdjustmentRules method that returns an array of TimeZoneInfo.AdjustmentRule objects. この配列の各要素は、特定の期間の夏時間との間の移行に関する情報を提供します。Each element of this array provides information about the transition to and from daylight saving time for a particular time period. (夏時間をサポートしていないタイムゾーンの場合、メソッドは空の配列を返します)。各 TimeZoneInfo.AdjustmentRule オブジェクトには、DaylightTransitionStart と、夏時間との間の遷移の特定の日付と時刻を定義する DaylightTransitionEnd プロパティがあります。(For time zones that do not support daylight saving time, the method returns an empty array.) Each TimeZoneInfo.AdjustmentRule object has a DaylightTransitionStart and a DaylightTransitionEnd property that defines the particular date and time of the transition to and from daylight saving time. IsFixedDateRule プロパティは、その遷移が固定されているか、フローティングであるかを示します。The IsFixedDateRule property indicates whether that transition is fixed or floating.

.NET は、Windows オペレーティングシステムによって提供され、レジストリに格納されているタイムゾーン情報に依存しています。.NET relies on time zone information provided by the Windows operating system and stored in the registry. 地球のタイムゾーンの数によっては、すべての既存のタイムゾーンがレジストリに表示されるわけではありません。Due to the number of the earth's time zones, not all existing time zones are represented in the registry. また、レジストリは動的な構造であるため、定義済みのタイムゾーンを追加または削除することができます。In addition, because the registry is a dynamic structure, predefined time zones can be added to or removed from it. 最後に、レジストリに履歴のタイムゾーンデータが含まれているとは限りません。Finally, the registry does not necessarily contain historic time zone data. たとえば、Windows XP では、レジストリにはタイムゾーン調整の1つのセットについてのみのデータが含まれています。For example, in Windows XP the registry contains data about only a single set of time zone adjustments. Windows Vista では、動的なタイムゾーンデータがサポートされています。つまり、1つのタイムゾーンには、特定の期間に適用される複数の調整規則を含めることができます。Windows Vista supports dynamic time zone data, which means that a single time zone can have multiple adjustment rules that apply to specific intervals of years. ただし、Windows Vista レジストリで定義され、夏時間をサポートするほとんどのタイムゾーンには、定義済みの調整規則が1つまたは2つしかありません。However, most time zones that are defined in the Windows Vista registry and support daylight saving time have only one or two predefined adjustment rules.

レジストリに TimeZoneInfo クラスが依存していることは、タイムゾーン対応アプリケーションが、特定のタイムゾーンがレジストリで定義されていることを特定できないことを意味します。The dependence of the TimeZoneInfo class on the registry means that a time zone-aware application cannot be certain that a particular time zone is defined in the registry. そのため、(ローカルのタイム ゾーンまたは UTC を示すタイム ゾーン以外の) 特定のタイム ゾーンをインスタンス化する場合、例外処理を使用する必要があります。As a result, the attempt to instantiate a specific time zone (other than the local time zone or the time zone that represents UTC) should use exception handling. また、必要な TimeZoneInfo オブジェクトをレジストリからインスタンス化できない場合に、アプリケーションの続行を可能にする方法も提供する必要があります。It should also provide some method of letting the application to continue if a required TimeZoneInfo object cannot be instantiated from the registry.

必要なタイムゾーンが存在しない場合に対処するために、TimeZoneInfo クラスには CreateCustomTimeZone メソッドが含まれています。このメソッドを使用して、レジストリには存在しないカスタムタイムゾーンを作成できます。To handle the absence of a required time zone, the TimeZoneInfo class includes a CreateCustomTimeZone method, which you can use to create custom time zones that are not found in the registry. カスタムタイムゾーンの作成の詳細については、「方法: 調整規則のないタイムゾーンを作成する」および「方法: 調整規則を使用してタイムゾーンを作成する」を参照してください。For details on creating a custom time zone, see How to: Create time zones without adjustment rules and How to: Create time zones with adjustment rules. さらに、ToSerializedString メソッドを使用して、新しく作成されたタイムゾーンを文字列に変換し、データストア (データベース、テキストファイル、レジストリ、アプリケーションリソースなど) に保存することができます。In addition, you can use the ToSerializedString method to convert a newly created time zone to a string and save it in a data store (such as a database, a text file, the registry, or an application resource). その後、FromSerializedString メソッドを使用して、この文字列を TimeZoneInfo オブジェクトに変換することができます。You can then use the FromSerializedString method to convert this string back to a TimeZoneInfo object. 詳細については、「方法: 埋め込みリソースにタイムゾーンを保存する」および「方法: 埋め込みリソースからタイムゾーンを復元する」を参照してください。For details, see How to: Save time zones to an embedded resource and How to: Restore time zones from an embedded resource.

各タイム ゾーンは、UTC からのベース オフセットと、既存の調整規則を反映した UTC からのオフセットによって表されるため、あるタイム ゾーンの時刻は、簡単に別のタイム ゾーンの時間に変換できます。Because each time zone is characterized by a base offset from UTC, as well as by an offset from UTC that reflects any existing adjustment rules, a time in one time zone can be easily converted to the time in another time zone. このため、TimeZoneInfo オブジェクトには、次のようないくつかの変換メソッドが含まれています。For this purpose, the TimeZoneInfo object includes several conversion methods, including:

  • ConvertTimeFromUtc。 UTC を指定されたタイムゾーンの時刻に変換します。ConvertTimeFromUtc, which converts UTC to the time in a designated time zone.

  • ConvertTimeToUtc、指定されたタイムゾーンの時刻を UTC に変換します。ConvertTimeToUtc, which converts the time in a designated time zone to UTC.

  • ConvertTime。指定したタイムゾーンの時刻を別の指定したタイムゾーンの時刻に変換します。ConvertTime, which converts the time in one designated time zone to the time in another designated time zone.

  • ConvertTimeBySystemTimeZoneIdは、指定されたタイムゾーンの時刻を別の指定されたタイムゾーンの時刻に変換するためのパラメーターとして、(TimeZoneInfo オブジェクトではなく) タイムゾーン識別子を使用します。ConvertTimeBySystemTimeZoneId, which uses time zone identifiers (instead of TimeZoneInfo objects) as parameters to convert the time in one designated time zone to the time in another designated time zone.

タイム ゾーン間の時間を変換する方法の詳細については、「タイム ゾーン間での時刻の変換」を参照してください。For details on converting times between time zones, see Converting times between time zones.

関連項目See also