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

Java 使用Joda,如何确定给定日期是否介于时间x和比x早3小时的时间之间?,java,jodatime,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 );

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

public boolean check( DateTime checkTime )
{
    DateTime someTime = new DateTime(); //set to "now" for sake of example
    return checkTime.isBefore( someTime ) && checkTime.notMoreThanThreeHoursBefore( someTime );
}
因此,如果将
time
设置为15:00,并且
checkTime
设置为12:15,则应返回true

如果
ameofy
设置为15:00,而
checkTime
设置为11:45,则应返回false,因为
checkTime
ameofy
早3个多小时

如果将
time
设置为15:00,并且
checkTime
设置为15:15,则应返回false,因为
checkTime
time
之后,很容易:

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

if (earliest.compareTo(checkTime) <= 0 && checkTime.compareTo(someTime) < 0)
DateTime有时=新的DateTime();
DateTime最早=某个时间。最小小时数(3);

如果(earlime.compareTo(checkTime)在玩了一番之后,我发现这样读起来很好:

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

你可以通过做
!y.isAfter(x)
-来做
x.isbeforequal(y)
-虽然有点迟钝。@dty实际上这是错误的!因为
x.isbeforequal(y)
意味着
y
不在
x
之前。这对应于:
!y.isBefore(x)
。这条评论在这里呆了5年多,没有人注意到错误。哇!是的,打得好。我忘记了间隔。Handy,它包括开始和结束:)