meses horas fechas entre diferencia dias calcular años c# datetime timespan

c# - horas - Calcule la diferencia entre dos fechas y obtenga el valor en años?



diferencia en meses entre dos fechas c# (6)

Posible duplicado:
¿Cómo calculo la edad de alguien en C #?

Quiero calcular básicamente la edad de los empleados. Entonces tenemos la fecha de nacimiento para cada empleado, así que en el lado de C # quiero hacer algo como esto:

int age=Convert.Int32(DateTime.Now-DOB);

Puedo usar los días y manipular y luego obtener la edad ... pero quería saber si hay algo que pueda usar directamente para obtener la cantidad de años.


¿Desea calcular la edad en años para un empleado? Luego puede usar este fragmento (de Calcular edad en C # ):

DateTime now = DateTime.Today; int age = now.Year - bday.Year; if (bday > now.AddYears(-age)) age--;

Si no, entonces por favor especifique. Estoy teniendo dificultades para entender lo que quieres.


En this sitio tienen:

public static int CalculateAge(DateTime BirthDate) { int YearsPassed = DateTime.Now.Year - BirthDate.Year; // Are we before the birth date this year? If so subtract one year from the mix if (DateTime.Now.Month < BirthDate.Month || (DateTime.Now.Month == BirthDate.Month && DateTime.Now.Day < BirthDate.Day)) { YearsPassed--; } return YearsPassed; }


Math.Round (DateTime.Now.Subtract (DOB) .TotalDays / 365.0)

Como se señaló, esto no funcionará. Tendría que hacer esto:

(Int32)Math.Round((span.TotalDays - (span.TotalDays % 365.0)) / 365.0);

y en ese punto, la otra solución es menos compleja y continúa siendo precisa en tramos más grandes.

Editar 2, ¿qué tal:

Math.Floor(DateTime.Now.Subtract(DOB).TotalDays/365.0)

Cristo, yo aspiro a las matemáticas básicas en estos días ...


Restando dos DateTime le devuelve un TimeSpan . Desafortunadamente, la unidad más grande que te devuelve es Días.

Aunque no es exacto, puedes estimarlo así:

int days = (DateTime.Today - DOB).Days; //assume 365.25 days per year decimal years = days / 365.25m;

Edit: Whoops, TotalDays es un doble, Days es un int.


private static Int32 CalculateAge(DateTime DOB) { DateTime temp = DOB; Int32 age = 0; while ((temp = temp.AddYears(1)) < DateTime.Now) age++; return age; }


(DateTime.Now - DOB).TotalDays/365

Restar una estructura DateTime de otra estructura DateTime le dará una estructura TimeSpan que tiene la propiedad TotalDays ... luego solo divida por 365