Condividi tramite


DateTime.CompareTo Metodo

Definizione

Confronta il valore di questa istanza con un valore DateTime specificato e indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.

Overload

CompareTo(DateTime)

Confronta il valore di questa istanza con un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.

CompareTo(Object)

Confronta il valore di questa istanza con un oggetto specificato contenente un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.

Commenti

I due overload del CompareTo metodo restituiscono un numero firmato che indica il valore relativo di questa istanza e l'argomento value , come illustrato nella tabella seguente.

Valore Descrizione
Minore di zero Questa istanza è precedente al parametro value.
Zero Questa istanza è uguale al parametro value.
Maggiore di zero Questa istanza è successiva al parametro value.

CompareTo(DateTime)

Origine:
DateTime.cs
Origine:
DateTime.cs
Origine:
DateTime.cs

Confronta il valore di questa istanza con un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.

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

Parametri

value
DateTime

Oggetto da confrontare con l'istanza corrente della classe.

Restituisce

Numero con segno che indica i valori relativi di questa istanza e il parametro value.

Valore Descrizione
Minore di zero Questa istanza è precedente al parametro value.
Zero Questa istanza è uguale al parametro value.
Maggiore di zero Questa istanza è successiva al parametro value.

Implementazioni

Esempio

Nell'esempio seguente vengono creati tre DateTime oggetti, uno che rappresenta la data di oggi, un altro che rappresenta la data un anno in precedenza e un terzo che rappresenta la data un anno in futuro. Chiama quindi il metodo e visualizza il CompareTo(DateTime) risultato del confronto.

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

Commenti

Per determinare la relazione dell'istanza corrente a value, il CompareTo metodo confronta la Ticks proprietà dell'istanza corrente e value ignora la proprietà Kind . Prima di confrontare DateTime gli oggetti, assicurarsi che gli oggetti rappresentino gli orari nello stesso fuso orario. È possibile eseguire questa operazione confrontando i valori delle relative Kind proprietà.

Questo metodo implementa l'interfaccia ed esegue leggermente meglio dell'overload System.IComparable<T> del DateTime.CompareTo(Object) metodo perché non deve convertire il value parametro in un oggetto.

Vedi anche

Si applica a

CompareTo(Object)

Origine:
DateTime.cs
Origine:
DateTime.cs
Origine:
DateTime.cs

Confronta il valore di questa istanza con un oggetto specificato contenente un valore DateTime specificato e restituisce un intero che indica se l'istanza è precedente, uguale o successiva al valore DateTime specificato.

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

Parametri

value
Object

Oggetto boxed da confrontare o null.

Restituisce

Numero con segno che indica i valori relativi di questa istanza e di value.

Valore Descrizione
Minore di zero Questa istanza è precedente al parametro value.
Zero Questa istanza è uguale al parametro value.
Maggiore di zero Questa istanza è successiva al parametro value oppure value è null.

Implementazioni

Eccezioni

value non è un oggetto DateTime.

Esempio

Nell'esempio seguente viene illustrato il CompareTo metodo.

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

Commenti

Per determinare la relazione dell'istanza corrente a value, il CompareTo metodo confronta la Ticks proprietà dell'istanza corrente e value ignora la proprietà Kind . Prima di confrontare DateTime gli oggetti, assicurarsi che gli oggetti rappresentino gli orari nello stesso fuso orario. È possibile eseguire questa operazione confrontando i valori delle relative Kind proprietà.

Qualsiasi istanza di DateTime, indipendentemente dal relativo valore, viene considerata maggiore di null.

Vedi anche

Si applica a