给定一个DateTime代表一个人的生日,我如何计算他们的年龄?
DateTime
一个易于理解和简单的解决方案。
// Save today's date. var today = DateTime.Today; // Calculate the age. var age = today.Year - birthdate.Year; // Go back to the year in which the person was born in case of a leap year if (birthdate.Date > today.AddYears(-age)) age--;
这是一种奇怪的方法,但是如果您将日期格式化为yyyymmdd并从当前日期中减去出生日期,然后删除您的年龄的最后 4 位数字:)
yyyymmdd
我不知道 C#,但我相信这适用于任何语言。
20080814 - 19800703 = 280111
删除最后 4 位数字 = 28。
28
C#代码:
int now = int.Parse(DateTime.Now.ToString("yyyyMMdd")); int dob = int.Parse(dateOfBirth.ToString("yyyyMMdd")); int age = (now - dob) / 10000;
或者,不以扩展方法的形式进行所有类型转换。错误检查省略:
public static Int32 GetAge(this DateTime dateOfBirth) { var today = DateTime.Today; var a = (today.Year * 100 + today.Month) * 100 + today.Day; var b = (dateOfBirth.Year * 100 + dateOfBirth.Month) * 100 + dateOfBirth.Day; return (a - b) / 10000; }