英語で読む

次の方法で共有


DateTime.CompareTo メソッド

定義

このインスタンスの値と指定した DateTime の値を比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示します。

オーバーロード

CompareTo(DateTime)

このインスタンスの値と指定した DateTime の値を比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。

CompareTo(Object)

このインスタンスの値と指定した DateTime の値を含む指定したオブジェクトを比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。

注釈

メソッドの 2 つのオーバーロードは、次の CompareTo 表に示すように、このインスタンスと引数の相対値を value 示す符号付き数値を返します。

説明
0 より小さい値 このインスタンスは、value よりも前の日時です。
ゼロ このインスタンスは value と同じです。
0 より大きい値 このインスタンスは、value よりも後の日時です。

CompareTo(DateTime)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

このインスタンスの値と指定した DateTime の値を比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。

C#
public int CompareTo(DateTime value);

パラメーター

value
DateTime

現在のインスタンスと比較する対象のオブジェクト。

戻り値

このインスタンスと value パラメーターの相対値を示す符号付き数値。

説明
0 より小さい値 このインスタンスは、value よりも前の日時です。
ゼロ このインスタンスは value と同じです。
0 より大きい値 このインスタンスは、value よりも後の日時です。

実装

次の例では、3 つの DateTime オブジェクトをインスタンス化します。1 つは今日の日付を表し、もう 1 つは 1 年前の日付を表し、3 つ目は 1 年後の日付を表します。 次に、 メソッドを CompareTo(DateTime) 呼び出し、比較の結果を表示します。

C#
using System;

public class DateTimeComparison
{
   private enum DateComparisonResult
   {
      Earlier = -1,
      Later = 1,
      TheSame = 0
   };

   public static void Main()
   {
      DateTime thisDate = DateTime.Today;

      // Define two DateTime objects for today's date
      // next year and last year		
      DateTime thisDateNextYear, thisDateLastYear;

      // Call AddYears instance method to add/substract 1 year
      thisDateNextYear = thisDate.AddYears(1);
      thisDateLastYear = thisDate.AddYears(-1);

      // Compare dates
      //
      DateComparisonResult comparison;
      // Compare today to last year
      comparison = (DateComparisonResult) thisDate.CompareTo(thisDateLastYear);
      Console.WriteLine("CompareTo method returns {0}: {1:d} is {2} than {3:d}",
                        (int) comparison, thisDate, comparison.ToString().ToLower(),
                        thisDateLastYear);

      // Compare today to next year
      comparison = (DateComparisonResult) thisDate.CompareTo(thisDateNextYear);
      Console.WriteLine("CompareTo method returns {0}: {1:d} is {2} than {3:d}",
                        (int) comparison, thisDate, comparison.ToString().ToLower(),
                        thisDateNextYear);
   }
}
//
// If run on October 20, 2006, the example produces the following output:
//    CompareTo method returns 1: 10/20/2006 is later than 10/20/2005
//    CompareTo method returns -1: 10/20/2006 is earlier than 10/20/2007

注釈

現在のインスタンスと の関係を調べるには、 メソッドはCompareTo現在のインスタンスvalueの プロパティをTicks比較しますが、valueそのKindプロパティは無視します。 オブジェクトを比較する DateTime 前に、オブジェクトが同じタイム ゾーンの時刻を表していることを確認します。 これを行うには、プロパティの Kind 値を比較します。

このメソッドは インターフェイスを実装し、パラメーターを System.IComparable<T> オブジェクトに変換する必要がないため、メソッドのオーバーロードよりも DateTime.CompareTo(Object) 若干優れたパフォーマンスを value 発揮します。

こちらもご覧ください

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CompareTo(Object)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

このインスタンスの値と指定した DateTime の値を含む指定したオブジェクトを比較し、このインスタンスの値が指定した DateTime の値よりも前か、同じか、または後かを示す整数を返します。

C#
public int CompareTo(object? value);
C#
public int CompareTo(object value);

パラメーター

value
Object

比較対象のボックス化されたオブジェクト、または null

戻り値

このインスタンスと value の相対値を示す符号付き数値。

説明
0 より小さい値 このインスタンスは、value よりも前の日時です。
ゼロ このインスタンスは value と同じです。
0 より大きい値 このインスタンスは value より後の時刻を表しているか、または valuenull です。

実装

例外

valueDateTime ではありません。

CompareToメソッドの例を次に示します。

C#
System.DateTime theDay = new System.DateTime(System.DateTime.Today.Year, 7, 28);
int compareValue;

try
{
    compareValue = theDay.CompareTo(DateTime.Today);
}
catch (ArgumentException)
{
   Console.WriteLine("Value is not a DateTime");
   return;
}

if (compareValue < 0)
   System.Console.WriteLine("{0:d} is in the past.", theDay);
else if (compareValue == 0)
   System.Console.WriteLine("{0:d} is today!", theDay);
else // compareValue > 0
   System.Console.WriteLine("{0:d} has not come yet.", theDay);

注釈

現在のインスタンスと の関係を調べるには、 メソッドはCompareTo現在のインスタンスvalueの プロパティをTicks比較しますが、valueそのKindプロパティは無視します。 オブジェクトを比較する DateTime 前に、オブジェクトが同じタイム ゾーンの時刻を表していることを確認します。 これを行うには、プロパティの Kind 値を比較します。

のインスタンスは DateTime、その値に関係なく、 より null大きいと見なされます。

こちらもご覧ください

適用対象

.NET 10 およびその他のバージョン
製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1