Como calcular a diferença entre duas datas em C#
-
Calcular a diferença entre duas datas em C# utilizando
-
Operador -
Calcular a diferença entre duas datas em C# utilizando o método
DateTime.Substract
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.