繁体   English   中英

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

[英]Using Joda, How do I determine if a given date is between time x and a time 3 hours earlier than x?

使用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,因为checkTimesomeTime之前超过3小时。

如果someTime设置为15:00并且checkTime设置为15:15,则它应该返回false,因为checkTimesomeTime之后。

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

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

简单:

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

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

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

我怀疑这只是你以后的minusHours :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM