DateTime dateTime1 = new DateTime( new java.util.Date() ).minusWeeks( 1 );
DateTime dateTime2 = new DateTime( new java.util.Date() );
DateTime dateTime3 = new DateTime( new java.util.Date() ).plusWeeks( 1 );
public static boolean isDateInBetweenIncludingEndPoints(final Date min, final Date max, final Date date){
return !(date.before(min) || date.after(max));
}
# 1 楼答案
另一种选择
# 2 楼答案
如果您不知道最小值/最大值的顺序
如果希望范围是包含的
您可以将
null
视为不受约束# 3 楼答案
像这样:
您可以使用
>
而不是>=
和<
而不是<=
将端点从“之间”的意义上排除# 4 楼答案
这可能更具可读性:
# 5 楼答案
下面是使用Joda-Time2.3库实现这一点的几种方法
一种方法是在DateTime实例上使用简单的
isBefore
和isAfter
方法。顺便说一下,Joda Time中的DateTime在概念上类似于java。util。日期(宇宙时间线上的一个时刻),但包括一个时区另一种方法是在Joda时间内建立一个间隔。
contains
方法测试给定的日期时间是否发生在间隔覆盖的时间范围内。间隔的开始是包含的,但端点是独占的。这种方法被称为“半开放”,象征着[)
请参见以下代码示例中的两种方法
转换java语言。util。日期实例到Joda时间^{} 实例。只需将Date实例传递给DateTime的构造函数。实际上,您还应该传递一个特定的^{} 对象,而不是依赖JVM的默认时区
通过测试在…之前/之后进行比较
使用间隔方法而不是isAfter/isBefore
转储到控制台
当运行时
# 6 楼答案
日期之间(包括结束点)可以写为
注意:正如@Ponmudi在评论中指出的,如果日期在毫秒级不同,这个解决方案可能不起作用