Compartilhar via


DateTime.CompareTo Método

Definição

Compara o valor dessa instância com um valor DateTime especificado e indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.

Sobrecargas

CompareTo(DateTime)

Compara o valor dessa instância com um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.

CompareTo(Object)

Compara o valor dessa instância com um objeto especificado que contém um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.

Comentários

As duas sobrecargas do método retornam um número assinado que indica o valor relativo dessa instância e o argumento , conforme CompareTo mostrado na tabela a value seguir.

Valor Descrição
Menor que zero Essa instância é anterior a value.
Zero Essa instância é igual a value.
Maior que zero Essa instância é posterior a value.

CompareTo(DateTime)

Compara o valor dessa instância com um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.

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

Parâmetros

value
DateTime

O objeto a ser comparado com a instância atual.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e do parâmetro value.

Valor Descrição
Menor que zero Essa instância é anterior a value.
Zero Essa instância é igual a value.
Maior que zero Essa instância é posterior a value.

Implementações

Exemplos

O exemplo a seguir instalita três objetos, um que representa a data de hoje, outro que representa a data de um ano anterior e um terceiro que representa a data de um ano DateTime no futuro. Em seguida, ele CompareTo(DateTime) chama o método e exibe o resultado da comparação.

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

Comentários

Para determinar a relação da instância atual com , o método compara a propriedade da instância atual value CompareTo e, Ticks porém, ignora value sua Kind propriedade. Antes de comparar objetos DateTime, verifique se os objetos representam horas no mesmo fuso horário. Você pode fazer isso comparando os valores de suas Kind propriedades.

Esse método implementa a interface e tem um desempenho ligeiramente melhor do que a sobrecarga do método porque não precisa converter o System.IComparable<T> parâmetro em um objeto DateTime.CompareTo(Object) value .

Confira também

Aplica-se a

CompareTo(Object)

Compara o valor dessa instância com um objeto especificado que contém um valor DateTime especificado e retorna um inteiro que indica se essa instância é anterior, igual ou posterior ao valor DateTime especificado.

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

Parâmetros

value
Object

Um objeto demarcado a ser comparado ou null.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e de value.

Valor Descrição
Menor que zero Essa instância é anterior a value.
Zero Essa instância é igual a value.
Maior que zero Essa instância é posterior a value, ou value é null.

Implementações

Exceções

value não é um DateTime.

Exemplos

O exemplo a seguir demonstra o CompareTo método.

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 );
   }
}
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

Comentários

Para determinar a relação da instância atual com , o método compara a propriedade da instância atual value CompareTo e, Ticks porém, ignora value sua Kind propriedade. Antes de comparar objetos DateTime, verifique se os objetos representam horas no mesmo fuso horário. Você pode fazer isso comparando os valores de suas Kind propriedades.

Qualquer instância de DateTime , independentemente de seu valor, é considerada maior que null .

Confira também

Aplica-se a