Date day1 = set_datetime(2017, Calendar.JUNE, 28, 8, 00, 0);
Date day2 = set_datetime(2017, Calendar.JUNE, 28, 10, 00, 0);
def set_datetime(int year, int month, int day, int hour, int minute, int second) {
Calendar cal = Calendar.getInstance();
cal.set(year, month, day, hour, minute, second);
Date cal_date = cal.getTime();
return cal_date
}
println "\t\t (day2.getTime() - day1.getTime()) = " + (day2.getTime() - day1.getTime())
(day2.getTime() - day1.getTime()) = 7199996
这里似乎有些不对劲,因为当我将毫秒转换为小时时,7199996 并不正好是 2 小时 (7200000)。事实上,少了 4 毫秒。为什么不是 7200000 毫秒?
最佳答案
您没有清除毫秒字段。
添加
cal.clear();
在 cal.set(...);
行之前,或者添加
cal.set(Calendar.MILLISECONDS, 0);
更一般地说,不要使用 java.util.Calendar
和 java.util.Date
:它们是旧的、设计不佳的类,充满了众所周知的错误。
使用 java.time
包中的类,在 Java 8 中引入;或来自 threetenbp 的类(class)或早期版本的 Java 上的 JodaTime。
关于java - 减去毫秒不会给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44822030/