给定日期时间的年龄,小数精度

如何在C#datetime中获得给定出生日期的人的年龄。

我想要一个40.69岁的精确年龄

这将计算确切的年龄。 年龄的小数部分是相对于上一个生日和下一个生日之间的天数计算的,因此它将正确处理闰年。

小数部分在一年中是线性的(并没有考虑月份的不同长度),如果你想表达一个分数年龄,这似乎最有意义。

// birth date DateTime birthDate = new DateTime(1968, 07, 14); // get current date (don't call DateTime.Today repeatedly, as it changes) DateTime today = DateTime.Today; // get the last birthday int years = today.Year - birthDate.Year; DateTime last = birthDate.AddYears(years); if (last > today) { last = last.AddYears(-1); years--; } // get the next birthday DateTime next = last.AddYears(1); // calculate the number of days between them double yearDays = (next - last).Days; // calcluate the number of days since last birthday double days = (today - last).Days; // calculate exaxt age double exactAge = (double)years + (days / yearDays); 

这将是一个近似计算:

  TimeSpan span = DateTime.Today.Subtract(birthDate); Console.WriteLine( "Age: " + (span.TotalDays / 365.25).toString() ); 

顺便说一句:请参阅Stack Overflow上的这个问题: 如何计算C#中某人的年龄?

近似的是:

  DateTime bd = new DateTime(1999, 1, 2); TimeSpan age = DateTime.Now.Subtract(bd); Console.WriteLine(age.TotalDays / 365.25); 

40年的部分很容易。 但是为了得到一个真正准确的小数点,我不确定你如何将其余的年龄翻译成十进制数。 您会看到年龄以年,月,日,小时,秒表示。 而且计算并不那么容易。 你必须处理周年纪念日。 就像有人在1月31日出生一样,他们1个月大的时候? 答案是3月1日。 但是在28天后的某些年份和29天后的某些年份。 这是我试图解决这个问题的javascript实现。

但我想小数可以表示自最近的生日纪念日以来的天数除以到下一个生日周年的天数。 如果你想要更精确,你可以使用相同的原理在几秒钟内完成。

但我认为这是一个时代的不良代表。 我们通常不会代表这样的年龄。

并确保您的日期时间在同一时区进行比较。

你可以这样做:

 Console.WriteLine(DateTime.Now.Date.Subtract(new DateTime(1980, 8, 1)).TotalDays / 365.25); 

小数部分允许多少误差? 确切的年龄

31年,10天,3小时等取决于所需的精度。