我正在尝试计算两个日期之间的天数。这是我的代码:
public class Main {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date date1 = null;
Date date2 = null;
String str1 = "01.01.1900";
String str2 = "16.06.2017";
try{
date1 = format.parse(str1);
date2 = format.parse(str2);
} catch (Exception e){
e.printStackTrace();
}
long i1 = date2.getTime() - date1.getTime();
System.out.println(i1/86400000);//milisec to days
}
}
结果是:42899 天。
但是如果我们在 EXCEL 中重新检查那个减法,结果是 42901
拜托,有人能解释一下真实结果在哪里吗?
Java 在对整数进行除法运算时会将结果向下舍入,所以我认为您在这里损失了一天:
System.out.println(i1/86400000);//milisec to days
在我尝试Java 8 API 后,它显示了42900 天(请注意,Java 8 和 Excel 都不包括范围内的最后一天):
LocalDate from = LocalDate.of(1900, Month.JANUARY, 1);
LocalDate to = LocalDate.of(2017, Month.JUNE, 16);
long daysBetween = ChronoUnit.DAYS.between(from, to);
由于此处描述的错误,Excel 以错误的方式计算了另一天。因此,回答您的问题 -您在四舍五入时松了一天,而 Excel 错误地添加了另一天。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句