Cómo calcular la diferencia entre dos fechas en C#

Puneet Dobhal 12 octubre 2023
  1. Calcular la diferencia entre dos fechas en C# usando el operador -
  2. Calcular la diferencia entre dos fechas en C# usando el método DateTime.Substract
Cómo calcular la diferencia entre dos fechas en C#

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.

Artículo relacionado - Csharp DateTime