Поделиться через


DateTime.CompareTo Метод

Определение

Сравнивает значение этого экземпляра с указанным DateTime значением и указывает, является ли этот экземпляр более ранним, чем или более поздним, чем указанное DateTime значение.

Перегрузки

Имя Описание
CompareTo(DateTime)

Сравнивает значение этого экземпляра с указанным DateTime значением и возвращает целое число, указывающее, является ли этот экземпляр более ранним, чем, или более поздним, чем указанное DateTime значение.

CompareTo(Object)

Сравнивает значение этого экземпляра с указанным объектом, содержащим указанное DateTime значение, и возвращает целое число, указывающее, является ли этот экземпляр более ранним, или более поздним, чем указанное DateTime значение.

Комментарии

Два перегрузки CompareTo метода возвращают подписанный номер, указывающий относительное значение этого экземпляра и value аргумент, как показано в следующей таблице.

Ценность Описание
Меньше нуля Этот экземпляр более ранний value.
Нуль Этот экземпляр совпадает с value.
Больше нуля Этот экземпляр позже value.

CompareTo(DateTime)

Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Сравнивает значение этого экземпляра с указанным DateTime значением и возвращает целое число, указывающее, является ли этот экземпляр более ранним, чем, или более поздним, чем указанное DateTime значение.

public:
 virtual int CompareTo(DateTime value);
public int CompareTo(DateTime value);
abstract member CompareTo : DateTime -> int
override this.CompareTo : DateTime -> int
Public Function CompareTo (value As DateTime) As Integer

Параметры

value
DateTime

Объект для сравнения с текущим экземпляром.

Возвращаемое значение

Подписанный номер, указывающий относительные значения этого экземпляра и value параметра.

Ценность Описание
Меньше нуля Этот экземпляр более ранний value.
Нуля Этот экземпляр совпадает с value.
Больше нуля Этот экземпляр позже value.

Реализации

Примеры

В следующем примере создается экземпляры трех DateTime объектов, которые представляют текущую дату, другую, представляющую дату одного года ранее, и треть, представляющую дату одного года в будущем. Затем CompareTo(DateTime) вызывает метод и отображает результат сравнения.

open System

type DateComparisonResult =
    | Earlier = -1
    | Later = 1
    | TheSame = 0

[<EntryPoint>]
let main _ =
    let thisDate = DateTime.Today

    // Define two DateTime objects for today's date next year and last year		
    // Call AddYears instance method to add/substract 1 year
    let thisDateNextYear = thisDate.AddYears 1
    let thisDateLastYear = thisDate.AddYears -1

    // Compare today to last year
    let comparison = thisDate.CompareTo thisDateLastYear |> enum<DateComparisonResult>
    printfn $"CompareTo method returns {int comparison}: {thisDate:d} is {comparison.ToString().ToLower()} than {thisDateLastYear:d}"

    // Compare today to next year
    let comparison = thisDate.CompareTo thisDateNextYear |> enum<DateComparisonResult>
    printfn $"CompareTo method returns {int comparison}: {thisDate:d} is {comparison.ToString().ToLower()} than {thisDateNextYear:d}"
                        
    0

// If run on December 31, 2021, the example produces the following output:
//    CompareTo method returns 1: 12/31/2021 is later than 12/31/2020
//    CompareTo method returns -1: 12/31/2021 is earlier than 12/31/2022
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
Option Strict On

Module DateTimeComparison
   Private Enum DateComparisonResult
      Earlier = -1
      Later = 1
      TheSame = 0
   End Enum
   
   Public Sub Main()

      Dim thisDate As Date = Date.Today

      ' Define two DateTime objects for today's date 
      ' next year and last year		
      Dim thisDateNextYear, thisDateLastYear As Date

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

       
      ' Compare dates
      '
      Dim comparison As DateComparisonResult
      ' Compare today to last year
      comparison = CType(thisDate.CompareTo(thisDateLastYear), DateComparisonResult)
      Console.WriteLine("CompareTo method returns {0}: {1:d} is {2} than {3:d}", _ 
                        CInt(comparison), thisDate, comparison.ToString().ToLower(), _ 
                        thisDateLastYear)
      
      ' Compare today to next year
      comparison = CType(thisDate.CompareTo(thisDateNextYear), DateComparisonResult)
      Console.WriteLine("CompareTo method returns {0}: {1:d} is {2} than {3:d}", _
                        CInt(comparison), thisDate, comparison.ToString().ToLower(), _
                        thisDateNextYear)
   End Sub
End Module
'
' 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

Комментарии

Чтобы определить связь текущего экземпляра valueс , CompareTo метод сравнивает Ticks свойство текущего экземпляра и value игнорирует их Kind свойство. Перед сравнением DateTime объектов убедитесь, что объекты представляют время в одном часовом поясе. Это можно сделать, сравнивая значения их Kind свойств.

Этот метод реализует System.IComparable<T> интерфейс и выполняет немного лучше, DateTime.CompareTo(Object) чем перегрузка метода, так как не требуется преобразовывать value параметр в объект.

См. также раздел

Применяется к

CompareTo(Object)

Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs
Исходный код:
DateTime.cs

Сравнивает значение этого экземпляра с указанным объектом, содержащим указанное DateTime значение, и возвращает целое число, указывающее, является ли этот экземпляр более ранним, или более поздним, чем указанное DateTime значение.

public:
 virtual int CompareTo(System::Object ^ value);
public:
 int CompareTo(System::Object ^ value);
public int CompareTo(object? value);
public int CompareTo(object value);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
member this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer

Параметры

value
Object

Прямоугольный объект для сравнения или null.

Возвращаемое значение

Подписанный номер, указывающий относительные значения этого экземпляра и value.

Ценность Описание
Меньше нуля Этот экземпляр более ранний value.
Нуля Этот экземпляр совпадает с value.
Больше нуля Этот экземпляр позже valueили value имеет значение null.

Реализации

Исключения

value не DateTimeявляется .

Примеры

В следующем примере демонстрируется CompareTo метод.

open System

let theDay = DateTime(DateTime.Today.Year, 7, 28)

try
    let compareValue = theDay.CompareTo DateTime.Today

    if compareValue < 0 then
        printfn $"{theDay:d} is in the past."
    elif compareValue = 0 then
        printfn $"{theDay:d} is today!"
    else // compareValue > 0
        printfn $"{theDay:d} has not come yet."
        
with :? ArgumentException ->
    Console.WriteLine("Value is not a DateTime");
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);
Dim thDay As New System.DateTime(System.DateTime.Today.Year, 7, 28)

Dim compareValue As Integer
Try
   compareValue = thDay.CompareTo(System.DateTime.Today)
Catch exp As ArgumentException
   System.Console.WriteLine("Value is not a DateTime")
End Try

If compareValue < 0 Then
   System.Console.WriteLine("{0:d} is in the past.", thDay)
ElseIf compareValue = 0 Then
   System.Console.WriteLine("{0:d} is today!", thDay)
Else   ' compareValue >= 1 
   System.Console.WriteLine("{0:d} has not come yet.", thDay)
End If

Комментарии

Чтобы определить связь текущего экземпляра valueс , CompareTo метод сравнивает Ticks свойство текущего экземпляра и value игнорирует их Kind свойство. Перед сравнением DateTime объектов убедитесь, что объекты представляют время в одном часовом поясе. Это можно сделать, сравнивая значения их Kind свойств.

Любой экземпляр DateTime, независимо от его значения, считается больше, чем null.

См. также раздел

Применяется к