【发布时间】:2016-04-10 07:35:41
【问题描述】:
当尝试比较两个 DateTime 时,我编写了这段代码
private boolean compareTime(DateTime dt1, DateTime dt2)
{
long d1 = (new Duration(dt1.getMillis() - dt2.getMillis())).getMillis();
long d2 = Duration.standardHours(1).getMillis();
return d1 < d2;
}
DateTime dt1 = new DateTime();
Thread.sleep(250);
DateTime dt2 = dt1.plusHours(2);
System.out.println(compareTime(dt1,dt2));
System.out.println(compareTime(dt2,dt1));
预计会打印出来
false
false
原来如此
true
false
所以当我查看 Duration CTOR 时,结果发现它实际上创建了一个持续时间为负毫秒的 Duration(getMils() 返回 -ve)。
-ve 持续时间是什么意思? (保持非常客观) 这是错误还是功能?
【问题讨论】: