将年份转换为十进制

时间:2017-02-27 20:52:18

标签: c# asp.net-mvc-5 decimal nodatime

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

更新

完全示例如下:

  

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为实际小数。

有办法做到这一点吗?我不希望这个数字四舍五入。我需要它准确。

1 个答案:

答案 0 :(得分:4)

您可以使用

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

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

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

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