avi*_*iad 6 java date jodatime
我想知道是否有任何标准API JodaTime来比较DateTime具有指定容差的2个对象?我正在寻找一个单线程,最好使用Joda标准API.不是像这篇文章中的时间aritmethic表达式.
理想情况下,它会是这样的:
boolean areNearlyEqual = SomeJodaAPIClass.equal(dt1, dt2, maxTolerance);
Run Code Online (Sandbox Code Playgroud)
谢谢!
用这个:
new Duration(dt1, dt2).isShorterThan(Duration.millis(maxTolerance))
Run Code Online (Sandbox Code Playgroud)
        这篇文章很老了,但是我发现接受的解决方案中的这一行有点长,我发现存在的东西没什么好处.所以我做了一个包含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);
    }
Run Code Online (Sandbox Code Playgroud)
所以这一行:
new Duration(date.getTime(), System.currentTimeMillis()).isShorterThan(Duration.standardSeconds(5)
Run Code Online (Sandbox Code Playgroud)
成为:
DateUtils.dateIsCloseToNow(date, Duration.standardSeconds(5))
Run Code Online (Sandbox Code Playgroud)
我发现在我需要验证创建日期的单元测试用例中非常有用.