日付、時刻、およびタイム ゾーン

.NET は基本的な DateTime 構造体だけでなく、タイム ゾーンでの作業をサポートする次のクラスも提供しています。

  • TimeZone

    システムのローカル タイム ゾーンおよび世界協定時刻 (UTC) ゾーンでの作業を行うには、このクラスを使用します。 TimeZone クラスのほとんどの機能は、TimeZoneInfo クラスに引き継がれています。

  • TimeZoneInfo

    このクラスを使用すると、システムに事前に定義されている任意のタイム ゾーンを処理し、新しいタイム ゾーンを作成して、1 つのタイム ゾーンから別のタイム ゾーンに日付/時刻を簡単に変換できます。 新規に開発を行う場合は、TimeZoneInfo クラスではなく、TimeZone クラスを使用する必要があります。

  • DateTimeOffset

    UTC からのオフセット (つまり時差) がわかっている日付および時刻で作業を行う場合は、この構造体を使用します。 DateTimeOffset 構造体は、日付および時刻の値と、その時刻の UTC からのオフセットを組み合わせたものです。 UTC との関係により、個々の日付と時刻の値によって具体的な日時が明確に特定されます。 これにより、DateTime の値よりも、DateTimeOffset の値の方がコンピューター間で移植しやすくなります。

.NET 6 以降では、次の型を使用できます。

  • DateOnly

    日付のみを表す値を使用する場合は、この構造体を使用します。 日付は、1 日の始めから終わりまで、1 日全体を表します。 DateOnly の範囲は、0001-01-01 から 9999-12-31 までです。 また、この型は、月、日、年の組み合わせを表し、特定の時刻はありません。 以前にコード内で、時刻を無視した日付を表すのに DateTime 型を使用していた場合は、その代わりにこの型を使用してください。

  • TimeOnly

    日付なしで時刻を表すには、この構造体を使用します。 この時刻は、特定されていない日の時、分、秒を表します。 TimeOnly の範囲は、00:00:00.0000000 から 23:59:59.9999999 までです。 この型は、時刻を表すのに型 DateTime および TimeSpan が使用されていた場合に、それらの代わりに使用することができます。

次のセクションでは、タイム ゾーンでの作業を行ったり、あるタイム ゾーンから別のタイム ゾーンに日付と時刻を変換できる、タイム ゾーンに対応したアプリケーションを作成したりするために必要な情報を提供します。

このセクションの内容

タイム ゾーンの概要
タイム ゾーンに対応したアプリケーションの作成に関連する用語、概念、問題について説明します。

DateTime、DateTimeOffset、TimeSpan、および TimeZoneInfo の使い分け
日付と時刻のデータを操作する場合、DateTimeDateTimeOffsetTimeZoneInfo の各型をどのようなときに使用するかについて説明します。

ローカル システムで定義されているタイム ゾーンの検索
ローカル システム上で検出されるタイム ゾーンを列挙する方法について説明します。

方法: コンピューター上に存在するタイム ゾーンを列挙する
コンピューターのレジストリに定義されているタイム ゾーンを列挙して、ユーザーが一覧から事前定義のタイム ゾーンを選択できるようにするための例を提供します。

方法: 定義済みの UTC オブジェクトおよびローカル タイム ゾーン オブジェクトにアクセスする
世界協定時刻とローカル タイム ゾーンにアクセスする方法について説明します。

方法: TimeZoneInfo オブジェクトをインスタンス化する
ローカル システムのレジストリから TimeZoneInfo オブジェクトをインスタンス化する方法について説明します。

DateTimeOffset オブジェクトのインスタンス化
DateTimeOffset オブジェクトをインスタンス化する方法、および DateTime の値を DateTimeOffset の値に変換する方法について説明します。

方法: 調整規則のないタイム ゾーンを作成する
夏時間の調整をサポートしないカスタム タイム ゾーンを作成する方法について説明します。

方法: 調整規則のあるタイム ゾーンを作成する
1 つ以上の夏時間調整をサポートするカスタム タイム ゾーンを作成する方法について説明します。

タイム ゾーンの保存と復元
タイム ゾーン データのシリアル化と逆シリアル化が TimeZoneInfo でどのようにサポートされるかを説明し、これらの機能を使用できるいくつかのシナリオを示します。

方法: 埋め込みリソースにタイム ゾーンを保存する
カスタム タイム ゾーンを作成し、その情報をリソース ファイルに保存する方法について説明します。

方法: 埋め込みリソースからタイム ゾーンを復元する
埋め込みリソース ファイルに保存されているカスタム タイム ゾーンをインスタンス化する方法について説明します。

日付と時刻を使用した算術演算の実行
DateTime および DateTimeOffset の値の加算、減算、比較に関連する問題について説明します。

方法: 日付と時刻の演算でタイム ゾーンを使用する
タイム ゾーンの調整規則を反映する日付と時刻の演算を実行する方法について説明します。

DateTime と DateTimeOffset 間の変換
DateTime および DateTimeOffset の値の間での変換方法について説明します。

タイム ゾーン間での時刻の変換
タイム ゾーン間での時刻の変換方法について説明します。

方法: あいまいな時刻を解決する
時刻をタイム ゾーンの標準時刻に対応させることで、あいまいな時刻を解決する方法について説明します。

方法: ユーザーがあいまいな時刻を解決できるようにする
ユーザーがあいまいな現地時刻と世界協定時刻の対応を決定できるようにする方法について説明します。

リファレンス

System.TimeZoneInfo