一尘不染

如何根据 DateTime 类型的生日计算某人的年龄?

javascript

给定一个DateTime代表一个人的生日,我如何计算他们的年龄?


阅读 224

收藏
2022-02-11

共2个答案

一尘不染

一个易于理解和简单的解决方案。

// 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--;
2022-02-11
一尘不染

这是一种奇怪的方法,但是如果您将日期格式化为yyyymmdd并从当前日期中减去出生日期,然后删除您的年龄的最后 4 位数字:)

我不知道 C#,但我相信这适用于任何语言。

20080814 - 19800703 = 280111 

删除最后 4 位数字 = 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;
}
2022-02-11