日期之间的差异会返回奇怪的结果

时间:2014-01-22 18:11:45

标签: java

我正在以这种方式计算两个日期时间之间的分钟差异:

long diff = time2.getTime() - time1.getTime();

return diff / (60 * 1000);

由于一个奇怪的原因,它返回的分钟数比预期的少。

例如,2014-01-22 18:45:002014-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”。我不知道为什么它会显示不同的语法。

3 个答案:

答案 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所说的。