我正在阅读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/

10-10 06:41