ある瞬間の日付及び時刻を格納するにはDateTime構造体を使う。DateTime型は,西暦0001年1月1日の午前00:00:00から西暦9999年12月31日の午後11:59:59までの間の値で日付と時刻を表す。

 似たデータ型にTimeSpan値型がある。DateTime値型とTimeSpan値型の違う点は,DateTimeがある瞬間を表し,TimeSpanがある時刻からある時刻までの時間間隔を表すことである。例えばあるDateTime型の値を別のDateTime型の値から減算すると,それら2つの値の時間間隔,つまりTimeSpan型の値を取得できる。また,現在を表すDateTime型の値に正のTimeSpan型の値を加算すると,将来の日付が得られる。

 .NET Framework 1.1までは,DateTime構造体に,privateのTicksフィールド(62 ビットの符号なし整数型で日付と時刻を表すタイマ刻み数)と,未使用の2ビット・フィールドとが連結された,合計64ビットのフィールドが格納されていた。Ticksフィールドの値は,Ticksプロパティから取得できる。

 .NET Framework 2.0以降は,DateTime構造体には,TicksフィールドとprivateのKindフィールドが連結された,合計64ビットのフィールドが格納される。Kindフィールドは,DateTime構造体によって表される時刻が「現地時刻」「世界協定時刻(UTC)」「そのいずれにも該当しない」のいずれかを示す2ビットの値である。Kindフィールドは,主に現地時刻とUTC時刻との間の変換時に使われ,時刻の比較や算術計算には使用されない。Kindフィールドの値は,Kindプロパティから取得できる。

 DateTime型の時刻値は,多くの場合,世界協定時刻(UTC)を使用して表される。世界協定時刻はグリニッジ標準時(GMT)と呼ばれることもある。世界協定時刻は,経度0°を基準として計算された時刻である。UTCは夏時間の影響を受けない。

 現地時刻は,特定のタイム・ゾーンを基準に計算される。タイム・ゾーンには,特定のオフセット値(UTC基準点からの時間のずれ)が割り当てられる。また,現地時刻は,夏時間を加味し,1日の長さを1時間遅らせたり,早めたりすることによって調整される場合がある。従って,現地時刻は,UTCにタイム・ゾーン・オフセットを加算し,必要に応じて夏時間を調整した時刻になる。UTC基準点におけるタイム・ゾーン・オフセットはゼロである。

 UTC時刻は,日時の計算や比較,ファイルのタイム・スタンプを追跡する目的に適している。これに対して現地時刻は,ユーザーに時刻を表示するときに適している。

 時刻が現地時刻であるか,UTC時刻であるかが不定の場合,DateTimeオブジェクトのKindプロパティはUnspecifiedになる。

 AddやSubtractなど,DateTime構造体を使用した計算では,この構造体の値そのものは変更されない。計算結果を値として保持する,新しいDateTime構造体が返される。

 夏時間は,現地時刻とUTC時刻と間の変換時にのみ考慮され,日時の比較や算術計算時には考慮されない。

 DateTimeオブジェクトの計算や比較では,対象となる複数のオブジェクトが同じタイム・ゾーンの時刻を表している場合にのみ,意味のある結果が得られる。

 DateTimeのメンバーによる演算では,うるう年などの情報を考慮する。

サンプルコードを見る


名前空間
System
対応バージョン
.NET Framework 2.0,1.1,1.0
.NET Compact Framework 2.0,1.0
主なプロパティ
Date
このインスタンスの日付部分(年月日)を取得する。

Day
このインスタンスで表される月の日付(日のみ)を取得する。

DayOfWeek
このインスタンスで表される曜日を取得する。

DayOfYear
このインスタンスで表される年間積算日(1月1日からの延べ日数)を取得する。

Hour
このインスタンスで表される時刻の時間部分を取得する。

Kind
このインスタンスが表す時刻の種類(現地時刻,世界協定時刻(UTC),そのどちらでもない)を示す値を取得する。現地時刻はDateTimeKind.Local,UTC時刻はDateTimeKind.Utc,どちらでもないときはDateTimeKind.Unspecifiedである。

Millisecond
このインスタンスで表される時刻のミリ秒部分を取得する。

Minute
このインスタンスで表される時刻の分の部分を取得する。

Month
このインスタンスで表される日付の月部分を取得する。

Now
コンピュータ上の現在の日時を現地時刻で表したDateTimeオブジェクトを取得する。

Second
このインスタンスで表される時刻の秒の部分を取得する。

Ticks
このインスタンスの日付と時刻を表すタイマ刻み数を取得する。

TimeOfDay
このインスタンスの時刻を取得する。

Today
現在の日付を取得する。時刻は「00:00:00」になる。

UtcNow
コンピュータ上の現在の日時を世界協定時刻(UTC)で表したDateTimeオブジェクトを取得する。

Year
このインスタンスで表される日付の年の部分を取得する。

MaxValue
DateTimeの最大有効値を表す。プロパティではなくパブリック・フィールドで,このフィールドは読み取り専用である。

MinValue
DateTimeの最小有効値を表す。プロパティではなくパブリック・フィールドで,このフィールドは読み取り専用である。

主なメソッド
Add
このインスタンスの値に,指定したTimeSpan値を加算する。

AddDays
このインスタンスの値に,指定した日数を加算する。double型の値を引数に取り,整数部が日数,小数部が1日の端数を表す。例えば「1.5」は1日と12時間を表す。

AddHours
このインスタンスの値に,指定した時間を加算する。double型の値を引数に取り,整数部が時間,小数部が時間の端数を表す。例えば「1.5」は1時間30分を表す。

AddMilliseconds
このインスタンスの値に,指定したミリ秒数を加算する。

AddMinutes
このインスタンスの値に,指定した分数を加算する。double型の値を引数に取り,整数部が分,小数部が分の端数を表す。例えば「1.5」は1分30秒を表す。

AddMonths
このインスタンスの値に,指定した月数を加算する。int型の引数を取る。

AddSeconds
このインスタンスの値に,指定した秒数を加算する。double型の値を引数に取る。

AddTicks
このインスタンスの値に,指定したタイマ刻み数を加算する。

AddYears
このインスタンスの値に,指定した年数を加算する。int型の引数を取る。

Compare
2つのDateTime型の値を比較し,これらの相対値を示す値を返す。このメソッドはstaticメソッドで,比較する2つの値を引数に指定する。返り値が0より小さいときは,第1引数の値が第2引数の値よりも小さい。返り値が0のときは,第1引数の値と第2引数の値が等しい。返り値が0より大きいときは,第1引数の値が第2引数の値よりも大きい。

CompareTo
指定したオブジェクトまたは値型とこのインスタンスとを比較し,これらの相対値を示す値を返す。

DaysInMonth
指定した月および年の日数を返す。

FromBinary
64ビットのバイナリ値を逆シリアル化し,元のDateTimeオブジェクトを再構築する。

FromFileTime
指定されたWindowsファイル時刻を,同等の現地時刻に変換する。

FromFileTimeUtc
指定されたWindowsファイル時刻を,同等のUTC時刻に変換する。

IsDaylightSavingTime
DateTimeのインスタンスが,現在のタイム・ゾーンの夏時間の期間内であるどうかを示す。Kindプロパティの値がLocalまたはUnspecifiedで,DateTimeインスタンスの値が現在のタイム・ゾーンの夏時間の期間内である場合はTrue。そうでない場合はFalseである。

IsLeapYear
指定した年がうるう年かどうかを示す値を返す。引数に指定した年がうるう年である場合はTrue。うるう年でない場合はFalse。

op_Addition(+演算子)
指定した日付と時刻に,指定した時間間隔を加算して,新しい日付と時刻を作成する。

op_Equality(=演算子)
指定した2つのDateTime型のインスタンスが等しいかどうかを調べる。

op_GreaterThan(>演算子)
指定したDateTime型の値が,指定したもう1つのDateTime型の値より大きいかどうかを調べる。

op_GreaterThanOrEqual(>=演算子)
指定したDateTime型の値が,指定したもう1つのDateTime型の値以上かどうかを調べる。

op_Inequality(!=演算子)
指定した2つのDateTime型インスタンスが等しくないかどうかを調べる。等しくないときにTrue,等しいときにFalseである。

op_LessThan(<演算子)
指定したDateTime型の値が,指定したもう1つのDateTime型の値より小さいかどうかを調べる。

op_LessThanOrEqual(<=演算子)
指定したDateTime型の値が,指定したもう1つのDateTime型の値以下かどうかを調べる。

op_Subtraction(-演算子)
指定したDateTime型の値から,指定したDateTime型の値またはTimeSpan型の値を減算する。前者の場合はTimeSpan型の値が返る。後者の場合はDateTime型の値が返る。

SpecifyKind
指定されたDateTime型の値と同じ時刻を表す新しいDateTime型オブジェクトを,DateTimeKind値(現地時刻,世界協定時刻(UTC),いずれでもないことを示す)に基づいて作成する。

Subtract
このインスタンスから,指定したDateTime型の値またはTimeSpan型の値を減算する。前者の場合はTimeSpan型の値が返る。後者の場合はDateTime型の値が返る。

ToBinary
現在のDateTimeオブジェクトを64ビットのバイナリ値にシリアル化する。後で,この値を使って,DateTimeオブジェクトを再構築できる。

ToFileTime
DateTimeオブジェクトの値をWindowsファイル時刻に変換する。.NET Framework 1.1までは,DateTimeオブジェクトが現地時刻ベースであることを前提として処理する。.NET Framework 2.0以降は,「現地時刻である」「UTC時刻である」「そのいずれでもない(現地時刻として処理される)」ことが,Kindプロパティを使って判断される。なお,Windowsファイル時刻とは,世界協定時刻(UTC)の西暦1601年1月1日午前00:00時以降の経過時間を,100ナノ秒間隔の数値で表す64 ビット値である。Windowsでは,アプリケーションによるファイルの作成,アクセス,書き込みの時刻が,ファイル時刻を使用して記録される。

ToFileTimeUtc
DateTimeオブジェクトの値をWindowsファイル時刻に変換する。.NET Framework 1.1までは,DateTimeオブジェクトが世界協定時刻(UTC)ベースであることを前提として処理する。.NET Framework 2.0以降は,「現地時刻である」「UTC時刻である」「そのいずれでもない(現地時刻として処理される)」ことが,Kindプロパティを使って判断される。なお,Windowsファイル時刻とは,世界協定時刻(UTC)の西暦1601年1月1日午前00:00時以降の経過時間を,100ナノ秒間隔の数値で表す64 ビット値である。Windowsでは,アプリケーションによるファイルの作成,アクセス,書き込みの時刻が,ファイル時刻を使用して記録される。

ToLocalTime
現在のDateTimeオブジェクトの値を現地時刻に変換する。

ToLongDateString
このインスタンスの値を,それと等価な長い形式の日付の文字列形式に変換する。

ToLongTimeString
このインスタンスの値を,それと等価の長い時刻書式の文字列形式に変換する。

ToShortDateString
このインスタンスの値を,それと等価な短い形式の日付の文字列形式に変換する。

ToShortTimeString
このインスタンスの値を,それと等価の短い時刻書式の文字列形式に変換する。

ToString
このインスタンスの値を,それと等価の文字列形式に変換する。

ToUniversalTime
DateTimeオブジェクトの値を世界協定時刻(UTC)に変換する。