Java 使用Joda,如何确定给定日期是否介于时间x和比x早3小时的时间之间?
使用Joda时间并获得以下行为的最简单方法是什么: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 );
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,它包括开始和结束:)