Cómo calcular la diferencia entre dos fechas en C#
-
Calcular la diferencia entre dos fechas en C# usando el operador
-
-
Calcular la diferencia entre dos fechas en C# usando el método
DateTime.Substract
En este artículo, exploraremos varios métodos para calcular la diferencia entre dos fechas en C#. Utilizaremos la estructura DateTime
para la representación de la estructura Date
y TimeSpan
para almacenar el resultado.
Usaremos la siguiente definición de fecha, especificando un instante de fecha usando el constructor DateTime
.
DateTime sample_date = new DateTime(2010, 6, 14);
Como puede observar, los elementos de la fecha en la declaración incluyen el año, mes y día.
Ahora, veamos los distintos métodos para calcular la diferencia entre dos días en términos de la cantidad de días.
Calcular la diferencia entre dos fechas en C# usando el operador -
La solución más simple es restar las dos fechas usando el operador -
. Dado que los objetos son del mismo tipo de datos DateTime
, se pueden restar directamente. El siguiente código representa 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);
}
}
Producción :
Difference in days: 423
Calcular la diferencia entre dos fechas en C# usando el método DateTime.Substract
El método DateTime.Subtract
es otra forma eficiente de lograr esto. Devuelve la diferencia entre dos fechas y el resultado puede almacenarse en el tipo de datos 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);
}
}
Producción :
Difference in days: 423
La estructura DateTime
también se puede utilizar para especificar la hora del día junto con la fecha. En este caso, mientras usa el método DateTime.Subtract
, asegúrese de que las fechas estén en las mismas zonas horarias. De lo contrario, el resultado incluirá la diferencia entre zonas horarias.
Además, utilizando el conjunto dual de propiedades de la clase TimeSpan
, también podemos extraer más información si es necesario. Al igual que en el código de ejemplo a continuación, hemos utilizado el prefijo Total
- TotalDays
, para obtener el resultado en valores fraccionarios.
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);
}
}
Producción :
Difference in Days = 423
Exact timespan in Days = 423.166666666667
Al finalizar el método apropiado para su uso, tenga en cuenta que el método del operador -
no tiene en cuenta el factor de zona horaria de las fechas. Entonces, si las fechas que está utilizando especifican zonas horarias, el método DateTime.Subtract
se convierte en la opción obvia.