如何比较Joda DateTime对象与可接受的偏移(容差)?

我想知道JodaTime是否有任何标准API来比较具有指定容差的2个DateTime对象? 我正在寻找一个Joda最好使用Joda标准API。 不是像这篇文章中那样的时间 – aritmethic表达式。

理想情况下,它会是这样的:

 boolean areNearlyEqual = SomeJodaAPIClass.equal(dt1, dt2, maxTolerance); 

谢谢!

用这个:

 new Duration(dt1, dt2).isShorterThan(Duration.millis(maxTolerance)) 

这篇文章很老了,但是我发现接受的解决方案中的这一行有点长,我发现存在的东西没什么好处。 所以我做了一个包含Date和DateTime的小类:

 public class DateTimeUtils { public static boolean dateIsCloseToNow(Date dateToCheck, Duration tolerance) { return dateIsCloseToNow(new DateTime(dateToCheck), tolerance); } public static boolean dateIsCloseToNow(DateTime dateToCheck, Duration tolerance) { return datesAreClose(dateToCheck, DateTime.now(), tolerance); } public static boolean datesAreClose(Date date1, Date date2, Duration tolerance) { return datesAreClose(new DateTime(date1), new DateTime(date2), tolerance); } public static boolean datesAreClose(DateTime date1, DateTime date2, Duration tolerance) { if (date1.isBefore(date2)) { return new Duration(date1, date2).isShorterThan(tolerance); } return new Duration(date2, date1).isShorterThan(tolerance); } 

所以这一行:

 new Duration(date.getTime(), System.currentTimeMillis()).isShorterThan(Duration.standardSeconds(5) 

成为:

 DateUtils.dateIsCloseToNow(date, Duration.standardSeconds(5)) 

我发现在我需要validation创建日期的unit testing用例中非常有用。