东西似乎不正确,我只是不知道我可以如何解决它。不同的时间间隔util.date和DAYS.between(本地时间)
我想知道2日期之间的天数差异。现在我实现了一个功能,它计算到天,从毫秒的差异为util.date对象
public long calculateNumberOfDays(Date from, Date to) {
return (to.getTime() - from.getTime())/(1000*60*60*24);
}
我的JUnit测试告诉我,有这个功能的错误,所以我重写它使用LOCALDATE的和ChronoUnit。 DAYS.between函数。它像一个魅力。
想知道什么这两个函数之间的差异,我写了这个小测试:
for(int numberDays = 1; numberDays<10; numberDays++){
LocalDate fromLD = LocalDate.now();
LocalDate toLD = fromLD.plusDays(numberDays);
Date fromD = Date.valueOf(fromLD);
Date toD = Date.valueOf(toLD);
long diffMS = toD.getTime() - fromD.getTime();
double diffDays = diffMS/(1000*60*60*24);
long numDaysDate = DAYS.between(fromLD, toLD);
System.out.println(numberDays+" = "+diffDays+"/"+numDaysDate);
}
它带来了以下的输出:
1 = 1.0/1
2 = 2.0/2
3 = 3.0/3
4 = 4.0/4
5 = 4.0/5
6 = 5.0/6
7 = 6.0/7
8 = 7.0/8
9 = 8.0/9
能有人向我解释,如何这个有可能? (1-4它工作,5-9 util.date已经损失了一天)
貌似夏令时间即将开始.... –
我没有知道今年我们节省了一整天的时间:P – Nexxurs
我已经给出了答案,但整数(或长整数)的部分向下舍入 –