精确的年龄计算

可能重复:
我如何用C#计算某人的年龄?

也许这可能很愚蠢,但我的年龄没有问题,但有时计算某个人的确切年龄是很好的,我在我的个人资料中介绍了我的出生日期(01/12/1975)“dd / mm / yyyy “它计算了33,我实际上仍然是32,计算确切的年龄不是更好吗?

也许

DateTime dt1 = DateTime.Now;
TimeSpan dt2;
dt2 = dt1.Subtract(new DateTime(1975, 12, 01));
double year = dt2.TotalDays / 365;

一年的结果是32.77405678074

这段代码可以吗?


如果你1975年1月12日出生,你今天将33岁。

如果你1975年12月1日出生,你今天将32岁。

如果你在编辑你的个人资料时看到生日字段中的记录,你会看到它显示“YYYY / MM / DD”,我确定它会尝试解释其他格式的日期,但它看起来像解释MM / DD / YYYY(美国标准日期)优先于DD / MM / YYYY(欧洲标准日期)。 简单的解决方法是根据建议的输入样式输入生日的日期。


也许这可能很愚蠢,但我的年龄没有问题,但有时计算某个人的确切年龄是很好的,我在我的个人资料中介绍了我的出生日期(01/12/1975)“dd / mm / yyyy “它计算了33,我实际上仍然是32,计算确切的年龄不是更好吗?

我的猜测是,这是一个本地化问题,但我不知道它会如何发生,因为(至少对我而言)这个配置文件是以“YYYY / MM / DD”格式填写你的年龄。 但是你的生日是一个在美国传统设置中作为有效日期(1月12日)的日期,因此这是我想要查看的区域。 我也是在1975年出生的,我的生日是下个月,而且我的年龄是正确的。


实际上,由于闰年,你的代码将会关闭。 由于时间跨度对象没有TotalYears属性,获得它的最好方法就是这样

请原谅VB.Net

Dim myAge AS Integer = DateTime.Now.year - BirthDate.year
If Birthdate.month < DateTime.Now.Month _
OrElse BirthDate.Month = DateTime.Now.Month AndAlso Birthdate.Day < DateTime.Now.Day Then
MyAge -= 1
END IF
链接地址: http://www.djcxy.com/p/54363.html

上一篇: Exact age calculation

下一篇: Calculating age based on date of birth in SQL and C#?