我正在构建一个应用程序,我的用户将需要当前日期和用户的生日(以年为单位)之间的差异为十进制格式。
更新
完全示例如下:
Birthdate - 1972年11月22日
当前日期 - 02/27/2017
年龄= 42.27
在我的代码中,我使用NodaTime。
所以,
var date2 = new LocalDate(emp.DateOfBirth.Year, emp.DateOfBirth.Month, emp.DateOfBirth.Day);
var date1 = new LocalDate(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day);
ViewModelObject.Age = (decimal)Period.Between(date2, date1, PeriodUnits.Years).Years;
使用上面的示例..它将生成24.00
..但我需要.00
为实际小数。
有办法做到这一点吗?我不希望这个数字四舍五入。我需要它准确。
答案 0 :(得分:4)
您可以使用
ViewModelObject.Age = (decimal) ((dateNow - dateOfBirth).TotalDays / 365.25);
对于一个人来说,基本上有两个系统:
基于日历。年龄是基于y / m / d值和常识或法律规则的整数。忽略月份(28/30/31)的长度,翻转天数。不支持分数年或天的概念。
生物医学或统计学。通常根据天数/ 365.25计算。这只会给你一个近似值,它可能与纪念日的法律定义不同。