使用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
之后。
答案 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
因为没有isBeforeOrEqual
或isAfterOrEqual
- 但您可以使用compareTo
表示任何关系。
我怀疑你曾经只是minusHours
:)