我正在以这种方式计算两个日期时间之间的分钟差异:
long diff = time2.getTime() - time1.getTime();
return diff / (60 * 1000);
由于一个奇怪的原因,它返回的分钟数比预期的少。
例如,2014-01-22 18:45:00
和2014-01-22 18:03:00
之间的差异为41 minutes
时应为42 minutes
是什么原因?如何解决?
修改
对于date2,调试器显示date1和“Wed Jan 22 18:03:31 GMT 2014”的“2014-01-22 18:45:00.0”。我不知道为什么它会显示不同的语法。
答案 0 :(得分:1)
如果您尝试除以60f * 1000
,您将看到41.something的结果,因为getTime()
也考虑了毫秒,并且您可以看到这些在您的日期中不是零值。
答案 1 :(得分:1)
它的舍入问题。如果你想要确切的数字,那么在这种情况下你应该使用Double。
答案 2 :(得分:0)
就像Oracle解释......
public long getTime()
返回自1970年1月1日00:00:00 GMT以此日期为代表的毫秒数
这是一个四舍五入的问题。如果你围绕两个“时间”(上面或下面)你将没有任何问题,但如果不是两个都将考虑到ms,你的结果可能会有1分钟(你的最小细节)。我会使用课程double
而不是@Nguyten Le所说的。