Hello, I have a datetime the holds a birthdate, for example 5/1/1984, I want to create a method that takes this date and return a string for the age ,for example 23 years and 9 months and 30 days
Thanks
Visual C# General
Hello, I have a datetime the holds a birthdate, for example 5/1/1984, I want to create a method that takes this date and return a string for the age ,for example 23 years and 9 months and 30 days
Thanks
These "age" problems are more complex than they appear on the surface.
To just handle the "years" part, consider this method:
// Returns the number of complete years (age) between d1 and d2.
public static int CalculateAge(DateTime d1, DateTime d2){
int years = d2.Year - d1.Year; DateTime anniversary = new DateTime(d2.Year, d1.Month, d1.Day) + d1.TimeOfDay; if (anniversary > d2)
// Check if did not yet reach the anniversary DateTime. return years;years -= 1;
}
By months and days, you need to define what "months and days" mean: not all months have the same number of days. You could easily adapt the above to find year and days:
int days = (d2 - anniversary).Days;
Thanks, The most complex is computing the months and days as we dont know the days of months and how many leap years were within the two dates
I quickly thought about this easy solution, but it is not 100% accurate:
DateTime
dob = DateTime.Parse(TextBox1.Text); int days = ((TimeSpan)(DateTime.Now - dob)).Days; int years = (int)(days / 365.25); int months = (int)(days / 30.4375); int involvedMonths = years * 12; int monthsSlack = months - involvedMonths; int involvedDays = (int)(monthsSlack * 30.4375); int daysSlack = (int)((days - (years * 365.25)) - involvedDays);Label1.Text = years.ToString() +
"Years, " + monthsSlack.ToString() + "Months, " + daysSlack.ToString() + "Days.";There is no "one" answer to this problem. It is all a matter of how you define "age". You haven't provided a rock solid definition of "age" (which, of course, needs to say what to do about the differences in the number of days per month).
I just simplified it and defined average of days per month which is about 30.4