Como calcular a diferença entre duas datas em C#

Puneet Dobhal 12 outubro 2023
  1. Calcular a diferença entre duas datas em C# utilizando - Operador
  2. Calcular a diferença entre duas datas em C# utilizando o método DateTime.Substract
Como calcular a diferença entre duas datas em C#

Neste artigo, vamos explorar vários métodos de cálculo da diferença entre duas datas em C#. Utilizaremos a estrutura DateTime para a representação de Data e TimeSpan para armazenar o resultado.

Utilizaremos a seguinte definição de data, especificando um instante de data utilizando o construtor DateTime.

DateTime sample_date = new DateTime(2010, 6, 14);

Como você pode notar, os elementos da data na declaração incluem o ano, mês e dia.

Agora, vamos analisar os vários métodos para calcular a diferença entre dois dias em termos do número de dias.

Calcular a diferença entre duas datas em C# utilizando - Operador

A solução mais simples é subtrair as duas datas utilizando o - operador. Como os objetos são do mesmo tipo de dados DateTime, eles podem ser subtraídos diretamente. O código a seguir descreve este método.

using System;
public class Sample {
  public static void Main() {
    DateTime date_1 = new DateTime(2019, 02, 12);
    DateTime date_2 = new DateTime(2020, 04, 10);

    /*Substraction (minus) of same data types yields difference in days*/
    Console.WriteLine("Difference in days: " + (date_2 - date_1).Days);
  }
}

Resultado:

Difference in days : 423

Calcular a diferença entre duas datas em C# utilizando o método DateTime.Substract

O método DateTime.Subtract é outra maneira eficiente de conseguir isto. Ele retorna a diferença entre duas datas e o resultado pode ser armazenado no tipo de dados TimeSpan.

using System;
public class Sample {
  public static void Main() {
    DateTime date_1 = new DateTime(2019, 02, 12);
    DateTime date_2 = new DateTime(2020, 04, 10);

    TimeSpan Diff_dates = date_2.Subtract(date_1);
    Console.WriteLine("Difference in days: " + Diff_dates.Days);
  }
}

Resultado:

Difference in days : 423

A estrutura DateTime também pode ser utilizada para especificar a hora do dia junto com a data. Neste caso, ao utilizar o método DateTime.Subtract, certifique-se de que as datas estejam nos mesmos fusos horários. Caso contrário, o resultado incluirá a diferença entre os fusos horários.

Além disso, utilizando o array duplo de propriedades da classe TimeSpan, podemos também extrair mais informações, se necessário. Como no código da amostra abaixo, utilizamos o prefixo Total - TotalDays, para obter o resultado em valores fracionários.

using System;
public class Sample {
  public static void Main() {
    /*Definations include time of day */
    DateTime date_1 = new DateTime(2019, 02, 12, 8, 0, 0);
    DateTime date_2 = new DateTime(2020, 04, 10, 12, 0, 0);

    TimeSpan Diff_dates = date_2.Subtract(date_1);
    Console.WriteLine("Difference in Days = " + Diff_dates.Days);
    Console.WriteLine("Exact timespan in Days = " + Diff_dates.TotalDays);
  }
}

Resultado:

Difference in Days = 423 Exact timespan in Days = 423.166666666667

Ao finalizar o método apropriado para sua utilização, observe que o método operador não leva em conta o fator de fuso horário das datas. Portanto, se as datas que você está utilizando especificam fusos horários, o método DateTime.Subtract torna-se a escolha óbvia.

Artigo relacionado - Csharp DateTime