我正在阅读Bob叔叔的“ The Craftsman”系列作品,并且已经读到#29(PDF)。其中,测试代码中包含以下代码段,用于断言日期足够接近:
private boolean DatesAreVeryClose(Date date1, Date date2) {
GregorianCalendar c1 = new GregorianCalendar();
GregorianCalendar c2 = new GregorianCalendar();
c1.setGregorianChange(date1);
c2.setGregorianChange(date2);
long differenceInMS = c1.getTimeInMillis() - c2.getTimeInMillis();
return Math.abs(differenceInMS) <= 1;
}
我阅读了文档,但无法弄清楚为什么仅使用
Date.getTime()
而不是引入日历等还不够好。我是否缺少一些特殊情况? 最佳答案
太空船上的时间与我们世界上的时间不同。另外,宇宙飞船上的Java API与我们这个世界中的API略有不同。 setGrogorianChange方法与宇宙飞船中的朱利安日期无关。相反,它是一种设置GregorianCalendar实例的时间的方法。在宇宙飞船的世界中,Date.getTime()不会返回毫秒。它返回一个散列值,该散列值以某种方式表示时间,但是不能减去或相加。
所以那里。
关于java - 使用GregorianCalendar.setGregorianChange计算时差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2089059/