エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

DateTime 構造体

2013/12/12

通常、日付や時刻として表現される瞬間を表します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public struct DateTime : IComparable, IComparable<DateTime>, 
	IConvertible, IEquatable<DateTime>, IFormattable

DateTime 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドDateTime(Int64)DateTime 構造体の新しいインスタンスを、指定したタイマー刻み数に初期化します。
パブリック メソッドDateTime(Int64, DateTimeKind)DateTime 構造体の新しいインスタンスを、指定したタイマー刻み数と世界協定時刻 (UTC) または現地時刻に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32)DateTime 構造体の新しいインスタンスを、指定した年、月、および日に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Calendar)DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、および日に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32)DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、および秒に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、および世界協定時刻 (UTC) または現地時刻に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Calendar)DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、および秒に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32)DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、およびミリ秒に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, DateTimeKind)DateTime 構造体の新しいインスタンスを、指定した年、月、日、時、分、秒、ミリ秒、および世界協定時刻 (UTC) または現地時刻に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar)DateTime 構造体の新しいインスタンスを、指定した暦の指定した年、月、日、時、分、秒、およびミリ秒に初期化します。
パブリック メソッドDateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, DateTimeKind)DateTime 構造体の新しいインスタンスを、特定の暦の指定した年、月、日、時、分、秒、ミリ秒、および世界協定時刻 (UTC) または現地時刻に初期化します。
このページのトップへ

  名前説明
パブリック プロパティDateこのインスタンスの日付の部分を取得します。
パブリック プロパティDayこのインスタンスで表される月の日付を取得します。
パブリック プロパティDayOfWeekこのインスタンスで表される曜日を取得します。
パブリック プロパティDayOfYearこのインスタンスで表される年間積算日を取得します。
パブリック プロパティHourこのインスタンスで表される日付の時間の部分を取得します。
パブリック プロパティKindこのインスタンスが表す時刻の種類 (現地時刻、世界協定時刻 (UTC)、または、そのどちらでもない) を示す値を取得します。
パブリック プロパティMillisecondこのインスタンスで表される日付のミリ秒の部分を取得します。
パブリック プロパティMinuteこのインスタンスで表される日付の分の部分を取得します。
パブリック プロパティMonthこのインスタンスで表される日付の月の部分を取得します。
パブリック プロパティ静的メンバーNowコンピューター上の現在の日時を現地時刻で表した DateTime オブジェクトを取得します。
パブリック プロパティSecondこのインスタンスで表される日付の秒の部分を取得します。
パブリック プロパティTicksこのインスタンスの日付と時刻を表すタイマー刻み数を取得します。
パブリック プロパティTimeOfDayこのインスタンスの時刻を取得します。
パブリック プロパティ静的メンバーToday現在の日付を取得します。
パブリック プロパティ静的メンバーUtcNowコンピューター上の現在の日時を世界協定時刻 (UTC) で表した DateTime オブジェクトを取得します。
パブリック プロパティYearこのインスタンスで表される日付の年の部分を取得します。
このページのトップへ

  名前説明
パブリック メソッドAddこのインスタンスの値に、指定した TimeSpan の値を加算した新しい DateTime を返します。
パブリック メソッドAddDaysこのインスタンスの値に、指定された日数を加算した新しい DateTime を返します。
パブリック メソッドAddHoursこのインスタンスの値に、指定した時間数を加算した新しい DateTime を返します。
パブリック メソッドAddMillisecondsこのインスタンスの値に、指定されたミリ秒数を加算した新しい DateTime を返します。
パブリック メソッドAddMinutesこのインスタンスの値に、指定された分数を加算した新しい DateTime を返します。
パブリック メソッドAddMonthsこのインスタンスの値に、指定された月数を加算した新しい DateTime を返します。
パブリック メソッドAddSecondsこのインスタンスの値に、指定された秒数を加算した新しい DateTime を返します。
パブリック メソッドAddTicksこのインスタンスの値に、指定されたタイマー刻みの数を加算した新しい DateTime を返します。
パブリック メソッドAddYearsこのインスタンスの値に、指定された年数を加算した新しい DateTime を返します。
パブリック メソッド静的メンバーCompareDateTime の 2 つのインスタンスを比較し、第 1 の DateTime インスタンスが、第 2 の DateTime インスタンスより前か、同じか、後かを示す整数を返します。
パブリック メソッドCompareTo(DateTime)このインスタンスの値と指定した DateTime の値を比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。
パブリック メソッドCompareTo(Object)このインスタンスの値と指定した DateTime の値を含む指定したオブジェクトを比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。
パブリック メソッド静的メンバーDaysInMonth指定した月および年の日数を返します。
パブリック メソッドEquals(DateTime)このインスタンスの値が、指定した DateTime インスタンスの値と等しいかどうかを示す値を返します。
パブリック メソッドEquals(Object)指定されたオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (ValueType.Equals(Object) をオーバーライドします。)
パブリック メソッド静的メンバーEquals(DateTime, DateTime)2 つの DateTime インスタンスが同じ日時の値を持っているかどうかを示す値を返します。
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッド静的メンバーFromBinary64 ビットのバイナリ値を逆シリアル化し、元のシリアル化 DateTime オブジェクトを再構築します。
パブリック メソッド静的メンバーFromFileTime指定された Windows ファイル時刻を、それと等価の現地時刻に変換します。
パブリック メソッド静的メンバーFromFileTimeUtc指定された Windows ファイル時刻を同等の UTC 時刻に変換します。
パブリック メソッド静的メンバーFromOADate指定した OLE オートメーション日付と等しい DateTime を返します。
パブリック メソッドGetDateTimeFormats()このインスタンスの値を、標準の日時形式指定子によってサポートされるすべての文字列形式に変換します。
パブリック メソッドGetDateTimeFormats(Char)このインスタンスの値を、指定した標準の日時形式指定子によってサポートされるすべての文字列形式に変換します。
パブリック メソッドGetDateTimeFormats(IFormatProvider)このインスタンスの値を、標準日時形式指定子および指定したカルチャ固有の書式情報によってサポートされる、すべての文字列形式に変換します。
パブリック メソッドGetDateTimeFormats(Char, IFormatProvider)このインスタンスの値を、指定した標準日時形式指定子およびカルチャ固有の書式情報によってサポートされる、すべての文字列形式に変換します。
パブリック メソッドGetHashCodeこのインスタンスのハッシュ コードを返します。 (ValueType.GetHashCode() をオーバーライドします。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドGetTypeCodeDateTime 値型の TypeCode を返します。
パブリック メソッドIsDaylightSavingTimeDateTime のインスタンスが、現在のタイム ゾーンの夏時間の期間内であるかどうかを示します。
パブリック メソッド静的メンバーIsLeapYear指定した年が閏年かどうかを示す値を返します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーParse(String)指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。
パブリック メソッド静的メンバーParse(String, IFormatProvider)指定したカルチャ固有の書式情報を使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。
パブリック メソッド静的メンバーParse(String, IFormatProvider, DateTimeStyles)指定したカルチャ固有の書式情報と書式スタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。
パブリック メソッド静的メンバーParseExact(String, String, IFormatProvider)指定した書式とカルチャ固有の書式情報を使用して、指定した日付と時刻の文字列形式を等価の DateTime の値に変換します。文字列形式の書式は、指定した書式と完全に一致する必要があります。
パブリック メソッド静的メンバーParseExact(String, String, IFormatProvider, DateTimeStyles)指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。文字列形式の書式は、指定した書式と完全に一致する必要があります。それ以外の場合は、例外がスローされます。
パブリック メソッド静的メンバーParseExact(String, String[], IFormatProvider, DateTimeStyles)指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。それ以外の場合は、例外がスローされます。
パブリック メソッド静的メンバーSpecifyKind指定された DateTime と同じタイマー刻みの数を持つ新しい DateTime オブジェクトを、指定された DateTimeKind 値 (現地時刻、世界協定時刻 (UTC)、または、そのいずれでもないことを示す) に基づいて作成します。
パブリック メソッドSubtract(DateTime)このインスタンスから指定した日付と時刻を減算します。
パブリック メソッドSubtract(TimeSpan)このインスタンスから指定した存続時間を減算します。
パブリック メソッドToBinary現在の DateTime オブジェクトを 64 ビットのバイナリ値にシリアル化します。後で、この値を使って、DateTime オブジェクトを再構築できます。
パブリック メソッドToFileTime現在の DateTime オブジェクトの値を Windows ファイル時刻に変換します。
パブリック メソッドToFileTimeUtc現在の DateTime オブジェクトの値を Windows ファイル時刻に変換します。
パブリック メソッドToLocalTime現在の DateTime オブジェクトの値を現地時刻に変換します。
パブリック メソッドToLongDateString現在の DateTime オブジェクトの値を、それと等価な長い形式の日付の文字列形式に変換します。
パブリック メソッドToLongTimeString現在の DateTime オブジェクトの値を、それと等価な長い形式の時刻の文字列形式に変換します。
パブリック メソッドToOADateこのインスタンスの値をそれと等価な OLE オートメーション日付に変換します。
パブリック メソッドToShortDateString現在の DateTime オブジェクトの値を、それと等価な短い形式の日付の文字列形式に変換します。
パブリック メソッドToShortTimeString現在の DateTime オブジェクトの値を、それと等価な短い形式の時刻の文字列形式に変換します。
パブリック メソッドToString()現在の DateTime オブジェクトの値を等価の文字列形式に変換します。 (ValueType.ToString() をオーバーライドします。)
パブリック メソッドToString(IFormatProvider)指定したカルチャ固有の書式情報を使用して、現在の DateTime オブジェクトの値をそれと等価な文字列形式に変換します。
パブリック メソッドToString(String)指定した書式を使用して、現在の DateTime オブジェクトの値をそれと等価の文字列形式に変換します。
パブリック メソッドToString(String, IFormatProvider)指定した書式およびカルチャ固有の書式情報を使用して、現在の DateTime オブジェクトの値をそれと等価の文字列形式に変換します。
パブリック メソッドToUniversalTime現在の DateTime オブジェクトの値を世界協定時刻 (UTC) に変換します。
パブリック メソッド静的メンバーTryParse(String, DateTime)指定した文字列形式の日時を対応する DateTime 表現に変換し、変換に成功したかどうかを示す値を返します。
パブリック メソッド静的メンバーTryParse(String, IFormatProvider, DateTimeStyles, DateTime)指定したカルチャ固有の書式情報と書式スタイルを使用して、指定した文字列形式の日付と時刻をそれと等価の DateTime に変換し、変換に成功したかどうかを示す値を返します。
パブリック メソッド静的メンバーTryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。文字列形式の書式は、指定した書式と完全に一致する必要があります。このメソッドは、変換に成功したかどうかを示す値を返します。
パブリック メソッド静的メンバーTryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。このメソッドは、変換に成功したかどうかを示す値を返します。
このページのトップへ

  名前説明
パブリック演算子静的メンバーAddition指定した日付と時刻に指定した時間間隔を加算して、新しい日付と時刻を作成します。
パブリック演算子静的メンバーEqualityDateTime の 2 つの指定したインスタンスが等しいかどうかを判断します。
パブリック演算子静的メンバーGreaterThan指定した DateTime が、指定したもう 1 つの DateTime より大きいかどうかを判断します。
パブリック演算子静的メンバーGreaterThanOrEqual指定した DateTime が、指定したもう 1 つの DateTime 以上かどうかを判断します。
パブリック演算子静的メンバーInequalityDateTime の 2 つの指定したインスタンスが等しくないかどうかを判断します。
パブリック演算子静的メンバーLessThan指定した DateTime が、指定したもう 1 つの DateTime より小さいかどうかを判断します。
パブリック演算子静的メンバーLessThanOrEqual指定した DateTime が、指定したもう 1 つの DateTime 以下かどうかを判断します。
パブリック演算子静的メンバーSubtraction(DateTime, DateTime)指定した日付と時刻から指定したもう 1 つの日付と時刻を減算して、時間間隔を返します。
パブリック演算子静的メンバーSubtraction(DateTime, TimeSpan)指定した日付と時刻から指定した時間間隔を減算して、新しい日付と時刻を返します。
このページのトップへ

  名前説明
パブリック フィールド静的メンバーMaxValueDateTime の最大有効値を表します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーMinValueDateTime の最小有効値を表します。このフィールドは読み取り専用です。
このページのトップへ

  名前説明
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToBooleanインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToByteインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToCharインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDateTimeインフラストラクチャ。 現在の DateTime オブジェクトを返します。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDecimalインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDoubleインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt16インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt32インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt64インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToSByteインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToSingleインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToTypeインフラストラクチャ。 現在の DateTime オブジェクトを、指定された型のオブジェクトに変換します。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt16インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt32インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt64インフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
このページのトップへ

DateTime 値型は、A.D. (西暦紀元) 0001 年 1 月 1 日の午前 00:00:00 から、A.D. (西暦紀元) 9999 年 12 月 31 日午後 11:59:59 までの値を持つ日付と時刻を表すことができます。

時刻値は 100 ナノ秒単位 (タイマー刻み) で表し、特定の日付は (うるう秒が追加されるタイマー刻みを除く) GregorianCalendar 暦の A.D. (西暦紀元) 0001 年 1 月 1 日の午前 00:00 からのタイマー刻み数で表します。

. たとえば、タイマー刻み値 31241376000000000L は、0100 年 1 月 1 日 (金曜日) の午前 00:00:00 を表します。DateTime 値は、常に、明示的な暦または既定の暦のコンテキストで表されます。

メモメモ:

分または秒など、いくつかの他の時間間隔に変換するタイマー刻み値で作業している場合は、TimeSpan.TicksPerDayTimeSpan.TicksPerHourTimeSpan.TicksPerMinuteTimeSpan.TicksPerSecond、または TimeSpan.TicksPerMillisecond 定数を使用して変換を実行する必要があります。たとえば、指定のタイマー刻みの数で表された秒数を、DateTime 値の Second コンポーネントに追加するには、dateValue.Second + nTicks/TimeSpan.TicksPerSecond 式を使用します。

DateTime 構造体には、Ticks フィールドとプライベートの Kind フィールドとが連結された、合わせて 64 ビットのフィールドが格納されます。Kind フィールドは、DateTime 構造体によって表される時刻が "現地時刻である"、"世界協定時刻 (UTC: Coordinated Universal Time) である"、または、"未指定のタイム ゾーンの時刻である" のいずれかを示す 2 ビットのフィールドです。Kind フィールドは、主にタイム ゾーン間の時刻変換時に使用され、時刻の比較や算術計算には使用されません。Kind フィールドの値は、Kind プロパティで取得できます。

メモメモ:

タイム ゾーンにある程度対応した日付と時刻の値を使用する DateTime 構造体の代わりに、DateTimeOffset 構造体を使用します。DateTimeOffset 構造体では、DateTime プライベート フィールドに日付と時刻の情報が格納され、Int16 プライベート フィールドに UTC との日付と時刻の差が分単位で格納されます。これによって、DateTimeOffset 値が特定のタイム ゾーンの時刻を表し、DateTime 値が UTC とローカル タイム ゾーンの時刻のみを明確に表すことができます。

DateTime オブジェクトのインスタンス化

新しい DateTime 値は、次のいずれかの方法で作成できます。

  • 日付と時刻の値の特定の要素 (年、月、および日、タイマー刻みの数など) を指定できる DateTime コンストラクターの任意のオーバーロードを呼び出す。特定の年、月、日、時、分、および秒を指定して日付を作成するために DateTime コンストラクターのいずれかを呼び出すステートメントを次に示します。

    
    DateTime date1 = new DateTime(2008, 5, 1, 8, 30, 52);
    
    
    
  • 日付と時刻の値を宣言するための、任意のコンパイラ固有の構文を使用する。たとえば、次の Visual Basic ステートメントは、新しい DateTime 値を初期化します。

    
    Dim date1 As Date = #5/1/2008 8:30:52 AM#
    
    
    
  • プロパティまたはメソッドにより返される日付と時刻の値を DateTime オブジェクトに代入する。現在の日付と時刻、現在の世界協定時刻 (UTC) の日付と時刻、および現在の日付を 3 つの新しい DateTime 変数に代入する例を次に示します。

    
    DateTime date1 = DateTime.Now;
    DateTime date2 = DateTime.UtcNow;
    DateTime date3 = DateTime.Today;
    
    
    
  • 日付と時刻の値の文字列形式を解析する。ParseParseExactTryParse、および TryParseExact のすべてのメソッドは、文字列をそれと等価の日付と時刻の値に変換します。Parse メソッドを使用して文字列を解析し、DateTime 値に変換する例を次に示します。

    ParseExactTryParse、および TryParseExact のすべてのメソッドは、文字列をそれと等価の日付と時刻の値に変換します。Parse メソッドを使用して文字列を解析し、DateTime 値に変換する例を次に示します。

    
    string dateString = "5/1/2008 8:30:52 AM";
    DateTime date1 = DateTime.Parse(dateString, 
                              System.Globalization.CultureInfo.InvariantCulture);
    
    
    

    TryParse メソッドと TryParseExact メソッドは、変換を試行するときに DateTime 値の有効な表現が特定の文字列に含まれているかどうかを示します。

  • DateTime 構造体の暗黙の既定コンストラクターを呼び出す。ほぼ同等のものがサポートされるコンパイラでは、日付と時刻を明示的に代入しないでも、それにより DateTime 値が宣言されています。次の例では、C# および Visual Basic での DateTime 暗黙の既定コンストラクターの呼び出しと、Visual Basic で代入をしない場合の DateTime 変数宣言を示します。

    
    DateTime dat1 = new DateTime();
    // The following method call displays 1/1/0001 12:00:00 AM.
    outputBlock.Text += dat1.ToString(System.Globalization.CultureInfo.InvariantCulture) + "\n";
    // The following method call displays True.
    outputBlock.Text += dat1.Equals(DateTime.MinValue) + "\n";
    
    
    

DateTime 値とその文字列形式

内部的には、すべての DateTime 値は、0001 年 1 月 1 日午前 00:00:00 以降に経過したタイマー刻みの数 (100 ナノ秒間隔の数) として表されます。実際の DateTime 値は、その値の文字列形式やユーザー インターフェイス要素での表示には依存しません。DateTime 値の外観は、書式設定操作の結果です。書式設定は、値をその値の文字列形式に変換するプロセスです。

日付と時刻の値の外観は、カルチャ、国際基準、アプリケーション要件、ユーザーの好みなどの要因によって異なるため、DateTime 構造体では、その ToString メソッドのオーバーロードを使用して、日付と時刻の値を柔軟に書式設定できます。既定の DateTime.ToString() メソッドは、現在のカルチャの短い形式の日付パターンと長い形式の時刻パターンを使用して、文字列形式の日付と時刻の値を返します。次の例では、既定の DateTime.ToString() メソッドを使用し、この例が実行されたコンピューターの現在のカルチャである en-US カルチャの短い形式の日付パターンと長い形式の時刻パターンを使用して日付と時刻を表示します。


DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
outputBlock.Text += date1.ToString() + "\n";
// For en-US culture, displays 3/1/2008 7:00:00 AM


DateTime.ToString(IFormatProvider) メソッドは、特定のカルチャの短い形式の日付パターンと長い形式の時刻パターンを使用して、文字列形式の日付と時刻の値を返します。DateTime.ToString(IFormatProvider) メソッドを使用し、fr-FR カルチャの短い形式の日付パターンと長い形式の時刻パターンを使用して日付と時刻を表示する例を次に示します。


DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
outputBlock.Text += date1.ToString(new System.Globalization.CultureInfo("fr-FR")) + "\n";
// Displays 01/03/2008 07:00:00


DateTime.ToString(String) メソッドは、現在のカルチャの書式指定規則を使用し、標準書式指定子またはカスタム書式指定子によって定義された書式で、文字列形式の日付と時刻を返します。次の例では、DateTime.ToString(String) メソッドを使用して、この例が実行されたコンピューターの現在のカルチャである en-US カルチャの完全な日付と時刻のパターンを表示します。


DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
outputBlock.Text += date1.ToString("F") + "\n";
// Displays Saturday, March 01, 2008 7:00:00 AM


DateTime.ToString(String, IFormatProvider) メソッドは、特定のカルチャの書式指定規則を使用し、特定の書式指定子によって定義された書式で、文字列形式の日付と時刻を返します。DateTime.ToString(String, IFormatProvider) メソッドを使用し、fr-FR カルチャの完全な日付と時刻のパターンを表示する例を次に示します。


DateTime date1 = new DateTime(2008, 3, 1, 7, 0, 0);
outputBlock.Text += date1.ToString("F", new System.Globalization.CultureInfo("fr-FR")) + "\n";
// Displays samedi 1 mars 2008 07:00:00


DateTime 値

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

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

UTC 時刻は、日時の計算や比較、およびファイルのタイムスタンプを追跡する目的に適しています。現地時刻は、デスクトップ アプリケーションのユーザー インターフェイスでの表示に適しています。(多くの Web アプリケーションなどの) タイム ゾーンに対応したアプリケーションは、他の多くのタイム ゾーンを処理する必要もあります。

DateTime オブジェクトの Kind プロパティが DateTimeKind.Unspecified の場合、時刻が現地時刻であるか、UTC 時刻であるか、または他のタイム ゾーンの時刻であるかは不定です。

DateTime 演算

AddSubtract など、DateTime 構造体を使用した計算では、この構造体の値そのものが変更されるわけではありません。代わりに、計算結果を値として保持する、新しい DateTime 構造体が返されます。

メモメモ:

DateTime オブジェクトの計算および比較では、対象となる複数のオブジェクトが同じタイム ゾーンの時刻を表している場合にのみ、意味のある結果を得ることができます。

ローカル タイム ゾーンの夏時間は、タイム ゾーン間の (UTC 時刻と現地時刻、あるタイム ゾーンの時刻と現地時刻など) 変換演算時にのみ考慮され、日時の比較や算術演算時には考慮されません。

DateTime 構造体自体が、あるタイム ゾーンから別のタイム ゾーンへの変換を限定的にサポートします。ToLocalTime メソッドを使用して UTC 時刻を現地時刻に変換することや、ToUniversalTime メソッドを使用して現地時刻を UTC 時刻に変換することができます。ただし、TimeZoneInfo クラスには、タイム ゾーン変換メソッドがすべて用意されています。これらのメソッドを使用すると、世界中のいずれかのタイム ゾーンの時刻を UTC または現地時刻に変換できます。

DateTime の各メンバーは、暗黙的にグレゴリオ暦を使用して演算を実行します。ただし、暦を指定するコンストラクターや、System.Globalization.DateTimeFormatInfo などの、IFormatProvider から派生したパラメーターで暗黙的に暦を指定するメソッドは例外です。

DateTime のメンバーによる演算には、閏年、1 か月の日数などの情報を考慮に入れることができます。

DateTime と TimeSpan

DateTime 値型と TimeSpan 値型の違う点は、DateTime が瞬間を表し、TimeSpan が時間間隔を表すことです。つまり、たとえば DateTime の 1 つのインスタンスを別のインスタンスから減算すると、それら 2 つのインスタンス間の時間間隔を表す TimeSpan オブジェクトを取得できます。または、現在の DateTime に正の TimeSpan を加算すると、将来の日付を表す DateTime 値が取得されます。

DateTime オブジェクトでは、時間間隔を加算したり、減算したりできます。時間間隔の指定には、正数や負数、タイマー刻み数や秒数、または TimeSpan オブジェクトも使用できます。

実装されているインターフェイス

この型は、IComparableIComparable<T>IEquatable<T>IFormattable、および IConvertible の各インターフェイスを実装します。この型の明示的な IConvertible インターフェイス メンバーの実装の代わりに、Convert クラスを使用します。

ほぼ等しい DateTime の値を比較して、一定の小さな範囲の許容誤差において "等しい" と判定する方法を次の例に示します。このコード例をコンパイルして実行する方法の詳細については、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;

class Example
{
   static bool RoughlyEquals(DateTime time, DateTime timeWithWindow, int windowInSeconds, int frequencyInSeconds)
   {

      long delta = (long)((TimeSpan)(timeWithWindow - time)).TotalSeconds % frequencyInSeconds;

      delta = delta > windowInSeconds ? frequencyInSeconds - delta : delta;

      return Math.Abs(delta) < windowInSeconds;
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      int window = 10;
      int freq = 60 * 60 * 2; // 2 hours;

      DateTime d1 = DateTime.Now;

      DateTime d2 = d1.AddSeconds(2 * window);
      DateTime d3 = d1.AddSeconds(-2 * window);
      DateTime d4 = d1.AddSeconds(window / 2);
      DateTime d5 = d1.AddSeconds(-window / 2);

      DateTime d6 = (d1.AddHours(2)).AddSeconds(2 * window);
      DateTime d7 = (d1.AddHours(2)).AddSeconds(-2 * window);
      DateTime d8 = (d1.AddHours(2)).AddSeconds(window / 2);
      DateTime d9 = (d1.AddHours(2)).AddSeconds(-window / 2);

      outputBlock.Text += String.Format("d1 ({0}) ~= d1 ({1}): {2}\n",
                          d1, d1, RoughlyEquals(d1, d1, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d2 ({1}): {2}\n", 
                          d1, d2, RoughlyEquals(d1, d2, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d3 ({1}): {2}\n", 
                          d1, d3, RoughlyEquals(d1, d3, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d4 ({1}): {2}\n", 
                          d1, d4, RoughlyEquals(d1, d4, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d5 ({1}): {2}\n", 
                          d1, d5, RoughlyEquals(d1, d5, window, freq));

      outputBlock.Text += String.Format("d1 ({0}) ~= d6 ({1}): {2}\n", 
                          d1, d6, RoughlyEquals(d1, d6, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d7 ({1}): {2}\n", 
                          d1, d7, RoughlyEquals(d1, d7, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d8 ({1}): {2}\n", 
                          d1, d8, RoughlyEquals(d1, d8, window, freq));
      outputBlock.Text += String.Format("d1 ({0}) ~= d9 ({1}): {2}\n", 
                          d1, d9, RoughlyEquals(d1, d9, window, freq));
   }
}
// The example displays output similar to the following:
//    d1 (1/28/2010 9:01:26 PM) ~= d1 (1/28/2010 9:01:26 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d2 (1/28/2010 9:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d3 (1/28/2010 9:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d4 (1/28/2010 9:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d5 (1/28/2010 9:01:21 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d6 (1/28/2010 11:01:46 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d7 (1/28/2010 11:01:06 PM): False
//    d1 (1/28/2010 9:01:26 PM) ~= d8 (1/28/2010 11:01:31 PM): True
//    d1 (1/28/2010 9:01:26 PM) ~= d9 (1/28/2010 11:01:21 PM): True


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのメンバーはスレッド セーフです。インスタンスの状態を変更するように見えるメンバーは、実際には新しい値を使用して初期化された新しいインスタンスを返します。他の型と同じように、確実なスレッド セーフを実現するには、この型のインスタンスを含む共有変数の読み取りと書き込みをロックによって保護する必要があります。

注意注意:

この型のインスタンスのバイナリ表現は大きすぎて 1 回の分割不可能操作に割り当てられないため、このインスタンスを割り当てることはすべてのハードウェア プラットフォームでスレッド セーフではありません。

表示:
© 2014 Microsoft