Foreando encontré varias propuestas que al menos a mi, no me funcionaron, ya que intentaban usar el metodo Substract de la clase DateTime, con un parametro DateTime; y esto no es posible porque -según mi compilador- no podia convertir DateTime en TimeSpan. Lo extraño, es que este metodo esta sobrecargado para aceptar ambos tipos de datos...
Pero en fin, una manera sencilla -y a mi gusto muy prolija- de hacerlo, es implementando un metodo al que podemos llamar, por ej, ObtenerDias y que le pasemos como argumento dos fechas (de tipo DateTime). Lo que nos devuleve es la diferencia en días entre dichas fechas. ( Obviamente, bien podría ser la diferencia en meses, años, segundos etc..)
public double ObtenerDias( DateTime Fecha1, DateTime Fecha2)
{
TimeSpan T1, T2;
double diff;
T1 = new TimeSpan( Fecha1.Ticks );
T2 = new TimeSpan( Fecha2.Ticks );
diff = ( T1.Substract(T2) ).TotalDays;
return diff;
}
La clase TimeSpan tiene la propiedad 'Ticks' como unidad de medida. Solo obtenemos los ticks de cada fecha, los restamos y mediante la propiedad TotalDays obtenemos la cantidad total de días entre ambas fechas. Logicamente se puede obtener TotalYears, TotalMinutes, etc.. Pero hay que tener cuidado con la propiedad 'Days' que no es lo mismo que 'TotalDays', ya que Days solo mide la cantidad de dias que corresponden al mes del año de la diferencia entre ambas fechas.. Por ejemplo:
si TotalDays = 35, entonces Days = 4 debido a que los 31 dias anteriores, corresponden al mes anterior y no se cuentan en el mes del ultimo de los 35 dias.
Me agradaría saber si esto les ha resultado de interés y si les ha servido. Saludos!
Hola que tal...muy util, pero me gustaria saber com puedo obtener los meses y años, ya que TimeSpan no cuenta con TotalMonths, ni TotalYears....por favor ayudame con esto, te estare muy agradecido....
ResponderEliminarAtt. Lionel 8D
Gracias me sirvio de mucho
ResponderEliminarun gran saludoo byee
Que tal, me parece muy interesante tu blogs, tengo una pregunta por hacerte, como hago para restar dos fechas con el control DateTimePicker y este resultado enviarlo a un TEXTBOX, esto es para calcular la edad de una persona, muchas gracias si me puedes colaborar
ResponderEliminar