如何比较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用例中非常有用。