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

时间:2011-01-12 22:44:21

标签: java jodatime

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

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

因此,如果someTime设置为15:00而checkTime设置为12:15,则应返回true。

如果someTime设置为15:00且checkTime设置为11:45,则应返回false,因为checkTime超过someTime之前的3小时。< / p>

如果someTime设置为15:00且checkTime设置为15:15,则应返回false,因为checkTime位于someTime之后。

2 个答案:

答案 0 :(得分:48)

经过一番游戏,我发现这很好看:

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

答案 1 :(得分:6)

易:

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

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

我使用compareTo因为没有isBeforeOrEqualisAfterOrEqual - 但您可以使用compareTo表示任何关系。

我怀疑你曾经只是minusHours:)