Java 周期返回 2 个日期之间的错误天数

Java Period return wrong number of days between 2 dates

提问人:James 提问时间:11/9/2023 最后编辑:Arvind Kumar AvinashJames 更新时间:11/9/2023 访问量:87

问:

我有以下代码来计算 2 天之间的天数差,排除的结果是 31 天,但代码返回 1 天。01/09/2023 and 02/10/2023

LocalDate from = LocalDate.of(2023, 9, 1);
LocalDate to = LocalDate.of(2023, 10, 02);

Period period = Period.between(from, to);

System.out.print(period.getYears() + " years,");
System.out.print(period.getMonths() + " months,");
System.out.print(period.getDays() + " days");

输出:

0 years,1 months,1 days

谁能告诉我我的代码出了什么问题

java java-time

评论

3赞 k314159 11/9/2023
为什么不对?正好是 1 个月零 1 天。
0赞 Rohith V 11/9/2023
1个月1天正确吗?这怎么可能是错误的
4赞 Rogue 11/9/2023
这是 1 天零 1 个月。如果您想要 和 之间的天数,您正在寻找fromtoChronoUnit.DAYS.between(from, to);
0赞 James 11/9/2023
谢谢@Rouge,这正是我正在寻找的。你能把它作为一个答案,这样我就可以接受它吗?
1赞 user85421 11/9/2023
基本上你想在Java 8中计算两个日期之间的天数或如何计算一个时期的天数?

答:

5赞 Bohemian 11/9/2023 #1

期间的部分是累加的:两个日期之间的时间段是 1 个月 1 天。


若要计算 LocalDates 之间的天数,请使用 until():

long daysBetween = from.until(to, ChronoUnit.DAYS);

或便利方法 between()

long daysBetween = ChronoUnit.DAYS.between(from, to);