Diferencia de DateTime en días sobre la base de la fecha solamente
Necesito encontrar la diferencia en días entre dos fechas.
Por ejemplo:
Entrada:**startDate** = 12-31-2012 23hr:59mn:00sec, **endDate** = 01-01-2013 00hr:15mn:00sec
Rendimiento esperado:1
Intenté lo siguiente:
(dt1-dt2).TotalDays
y convertir a entero pero no me dio la respuesta adecuada, ya que el doble se debe convertir a int. probado. Matemáticas, conversión, ...dt1.day - dt2.day
no funciona en mesesdt.Substract()
tiene la misma salida que la opción 1 mencionada anteriormente.Nada de lo anterior funcionó, así que terminé escribiendo el siguiente código. El código funciona bien, pero creo que debe haber una solución con solo un par de líneas de código.
public static int GetDifferenceInDaysX(this DateTime startDate, DateTime endDate)
{
//Initializing with 0 as default return value
int difference = 0;
//If either of the dates are not set then return 0 instead of throwing an exception
if (startDate == default(DateTime) | endDate == default(DateTime))
return difference;
//If the dates are same then return 0
if (startDate.ToShortDateString() == endDate.ToShortDateString())
return difference;
//startDate moving towards endDate either with increment or decrement
while (startDate.AddDays(difference).ToShortDateString() != endDate.ToShortDateString())
{
difference = (startDate < endDate) ? ++difference : --difference;
}
return difference;
}
Nota: No tengo ningún problema de rendimiento en la iteración del bucle while ya que la diferencia máxima no será más de 30 a 45 días.