使用Joda,我如何确定给定日期是否介于时间x和比x早3小时的时间之间?

2022-09-01 21:56:10

使用Joda时间并获得类似以下行为的最简单方法是什么:

public boolean check( DateTime checkTime )
{
    DateTime someTime = new DateTime(); //set to "now" for sake of example
    return checkTime.isBefore( someTime ) && checkTime.notMoreThanThreeHoursBefore( someTime );
}

因此,如果设置为 15:00 并设置为 12:15,则应返回 true。someTimecheckTime

如果设置为 15:00 并设置为 11:45,则应返回 false,因为之前已超过 3 小时。someTimecheckTimecheckTimesomeTime

如果 设置为 15:00 并设置为 15:15,则应返回 false,因为 is 在 之后。someTimecheckTimecheckTimesomeTime


答案 1

经过一番研究,我发现这个读起来很好:

return new Interval( someTime.minusHours( 3 ), someTime ).contains( checkTime );

答案 2

容易:

DateTime someTime = new DateTime();
DateTime earliest = someTime.minusHours(3);

if (earliest.compareTo(checkTime) <= 0 && checkTime.compareTo(someTime) < 0)

我用过,因为没有或 - 但你可以用于任何关系。compareToisBeforeOrEqualisAfterOrEqualcompareTo

我怀疑这只是你在追求,虽然:)minusHours


推荐