Java 8计算年龄的日期时间(小数点)

时间:2017-10-28 01:55:36

标签: java java-8 java-time

我是使用Java 8日期时间API的新手,我想知道如何计算小数的年龄,它返回双值,如30.5,这意味着30年零6个月?例如,下面的示例代码将输出设置为30.0但不是30.5,这可能正在尝试。

LocalDate startDate = LocalDate.of(1984, Month.AUGUST, 10);
LocalDate endDate = LocalDate.of(2015, Month.JANUARY, 10);

double numberOfYears = ChronoUnit.YEARS.between(startDate, endDate);

System.out.println(numberOfYears); //Getting output as 30.0 but not 30.5 

1 个答案:

答案 0 :(得分:2)

ChronoUnit between方法JavaDoc明确指出:

  

计算返回一个整数,表示两个时间之间的完整单位数。

所以你不能通过查询之间的年份来获得30.5。它只会给你整数 - 30。

但是你能做的就是得到月份并除以12.为了更高的精确度,你可以使用天数,甚至更小的单位。

LocalDate startDate = LocalDate.of(1984, Month.AUGUST, 10);
LocalDate endDate = LocalDate.of(2015, Month.JANUARY, 10);

double numberOfMonths = ChronoUnit.MONTHS.between(startDate, endDate) / 12.0;
System.out.println(numberOfMonths); // prints 30.416666666666668

(如果您的endDate 二月 10,2015,那么它会打印30.5 ....)