将年份转换为十进制

Convert Years to decimal

我正在构建一个应用程序,我的用户将需要当前日期与用户出生日期(以年为单位)之间的差值,以十进制格式表示。


更新

一个确切的例子是这样的:

Birthdate - 11/22/1974

Current Date - 02/27/2017

Age = 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是实际的小数。

有办法吗?我不希望数字四舍五入。我需要它是准确的。

您可以使用

ViewModelObject.Age = (decimal) ((dateNow - dateOfBirth).TotalDays / 365.25);

对于一个年龄段的人来说,基本上有两个系统:

  • 基于日历。年龄是一个基于 y/m/d 值和常识或法律规则的整数。忽略月份的长度 (28/30/31),闰日顺延。不支持小数年或天的概念。

  • 生物医学或统计学。通常根据days/365.25计算。这只会给你一个近似值,它可能与周年纪念日的法律定义不同。