返回奇怪的结果
问题描述:
我计算分钟差的两个日期之间的时间以这种方式:返回奇怪的结果
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
是什么原因?如何解决它?
编辑
调试器显示 “2014年1月22日18:45:00.0” 的日期1和 “周三1月22日18时03分31秒格林尼治标准时间2014” 的日期2。我不知道它为什么显示不同的语法。
答
如果您尝试除以60f * 1000
,则会看到41的结果,因为getTime()
也考虑了毫秒,因为您可以看到这些不是您的日期值中的零。
答
其四舍五入问题。长截断小数,如果你想要确切的数字,你应该在这种情况下使用Double。
答
与Oracle解释...
public long getTime()
返回自1970年1月1日,该日期
这是一个四舍五入的问题表示00:00:00 GMT毫秒数。如果你围绕两次'上下',你不会有任何问题,但如果两者都不考虑,你的结果可能会变化1分钟(你的最小细节)。我会使用类double
而不是只要@Nguyten勒说。
'time1'和'time2'的确切值是多少? –
可能舍入 - 被截断的秒数的小数部分。 – duffymo
请显示一个简短但完整的程序来演示问题。 –