【发布时间】:2010-10-09 14:20:26
【问题描述】:
请包括纳米,否则将是微不足道的:
long diff = Math.abs(t1.getTime () - t2.getTime ());
[编辑] 我想要最精确的结果,所以没有双打;只有整数/长算法。此外,结果必须是积极的。伪代码:
Timestamp result = abs (t1 - t2);
例子:
t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
-> diff = (time=2, nanos=2000000)
是的,java.sql.Timestamp 中的毫秒在时间和 nanos par 中重复,因此 1001 毫秒意味着 1 秒 (1000) 和 1 毫秒,在 time 部分和 nanos 部分中,因为 1毫秒 = 1000000 纳秒)。这比看起来要狡猾得多。
我建议不要在没有实际测试代码或准备好工作代码示例的情况下发布答案:)
【问题讨论】:
-
那么,如果没有人知道,你有一个解决方案吗?
-
根据 Timestamp 源代码中的 cmets,millis 部分实际上并没有在 nanos 中复制。取而代之的是,直到秒存储在 java.lang.Date 的超类中,并且 nanos 提供所有其余时间。
-
@mmyers:我正在研究一个,但我希望有人有一个可行的例子来拯救我可怜的大脑......但我应该猜到,当谷歌没有打开任何东西时,没有人有t1.getTime()-t2.getTime()
-
@Richard:是的。狡猾的是,他们在内部做正确的事。如果您调用 API,它会将毫秒混合到两个字段中;看看我的单元测试看起来有多奇怪。
-
该死!这个废话花了我一个小时! =8*O