DateTime.CompareTo Metoda

Definicja

Porównuje wartość tego wystąpienia z określoną DateTime wartością i wskazuje, czy to wystąpienie jest wcześniejsze niż, takie same jak, czy nowsze niż określona DateTime wartość.

Przeciążenia

CompareTo(DateTime)

Porównuje wartość tego wystąpienia z określoną DateTime wartością i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsze niż, takie same jak, czy nowsze niż określona DateTime wartość.

CompareTo(Object)

Porównuje wartość tego wystąpienia z określonym obiektem, który zawiera określoną DateTime wartość, i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsze niż, takie same jak lub nowsze niż określona DateTime wartość.

Uwagi

Dwa przeciążenia CompareTo metody zwracają cyfrę ze znakiem, która wskazuje względną wartość tego wystąpienia i argumentu value , jak pokazano w poniższej tabeli.

Wartość Opis
Mniej niż zero To wystąpienie jest wcześniejsze niż value.
Zero To wystąpienie jest takie samo jak value.
Większe od zera To wystąpienie jest późniejsze niż value.

CompareTo(DateTime)

Porównuje wartość tego wystąpienia z określoną DateTime wartością i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsze niż, takie same jak, czy nowsze niż określona DateTime wartość.

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

Parametry

value
DateTime

Obiekt do porównania z bieżącym wystąpieniem.

Zwraca

Int32

Liczba ze znakiem wskazująca względne wartości tego wystąpienia i parametru value .

Wartość Opis
Mniej niż zero To wystąpienie jest wcześniejsze niż value.
Zero To wystąpienie jest takie samo jak value.
Większe od zera To wystąpienie jest późniejsze niż value.

Implementuje

Przykłady

Poniższy przykład tworzy wystąpienie trzech DateTime obiektów, jeden, który reprezentuje bieżącą datę, drugą, która reprezentuje datę jeden rok wcześniej, a trzecią, która reprezentuje datę jeden rok w przyszłości. Następnie wywołuje metodę CompareTo(DateTime) i wyświetla wynik porównania.

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

Uwagi

Aby określić relację bieżącego wystąpienia valuez metodą , CompareTo metoda porównuje Ticks właściwość bieżącego wystąpienia i value ignoruje ich Kind właściwość. Przed porównaniem DateTime obiektów upewnij się, że obiekty reprezentują czasy w tej samej strefie czasowej. Można to zrobić, porównując wartości ich Kind właściwości.

Ta metoda implementuje System.IComparable<T> interfejs i działa nieco lepiej niż DateTime.CompareTo(Object) przeciążenie metody, ponieważ nie musi konwertować parametru value na obiekt.

Zobacz też

Dotyczy

CompareTo(Object)

Porównuje wartość tego wystąpienia z określonym obiektem, który zawiera określoną DateTime wartość, i zwraca liczbę całkowitą, która wskazuje, czy to wystąpienie jest wcześniejsze niż, takie same jak lub nowsze niż określona DateTime wartość.

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

Parametry

value
Object

Obiekt skrzynkowy do porównania lub null.

Zwraca

Int32

Liczba ze znakiem wskazująca względne wartości tego wystąpienia i value.

Wartość Opis
Mniej niż zero To wystąpienie jest wcześniejsze niż value.
Zero To wystąpienie jest takie samo jak value.
Większe od zera To wystąpienie jest późniejsze niż value, lub value ma nullwartość .

Implementuje

Wyjątki

valuenie jest .DateTime

Przykłady

W poniższym przykładzie pokazano metodę CompareTo .

using namespace System;
void main()
{
   

   System::DateTime theDay(System::DateTime::Today.Year,7,28);
   int compareValue;
   try
   {
      compareValue = theDay.CompareTo( System::DateTime::Today );
   }
   catch ( ArgumentException^ ) 
   {
      System::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 );
   }
}
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

Uwagi

Aby określić relację bieżącego wystąpienia valuez metodą , CompareTo metoda porównuje Ticks właściwość bieżącego wystąpienia i value ignoruje ich Kind właściwość. Przed porównaniem DateTime obiektów upewnij się, że obiekty reprezentują czasy w tej samej strefie czasowej. Można to zrobić, porównując wartości ich Kind właściwości.

Każde wystąpienie klasy DateTime, niezależnie od jego wartości, jest uznawane za większe niż null.

Zobacz też

Dotyczy