Java 8 用于计算小数年龄的日期时间
Java 8 Date time for calculating age in decimals
我是使用 Java 8 日期时间 API 的新手,我想知道如何计算小数年龄 returns double 值,如 30.5,这意味着 30岁零六个月?例如,下面的示例代码使我的输出为 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
JavaDoc for ChronoUnit
的 between
方法明确指出:
The calculation returns a whole number, representing the number of complete units between the two temporals.
所以你不能通过查询之间的年份来获得 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
是 February 10, 2015,那么它会打印 30.5....)
我是使用 Java 8 日期时间 API 的新手,我想知道如何计算小数年龄 returns double 值,如 30.5,这意味着 30岁零六个月?例如,下面的示例代码使我的输出为 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
JavaDoc for ChronoUnit
的 between
方法明确指出:
The calculation returns a whole number, representing the number of complete units between the two temporals.
所以你不能通过查询之间的年份来获得 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
是 February 10, 2015,那么它会打印 30.5....)