将两个日期与方法前的日期进行比较时,如果日期相似,则返回false,如下所示:
date1.before(date2)在这种情况下,该方法总是返回false,这对我来说没有意义(换句话说,不适用于我的情况).我想检查一个日期(日/月/年)是否等于今天的日期(日/月/年)?
xle*_*ier 77
因为date1.equals(date2),date1.before(date2)返回false 是正常的.一如既往date1.after(date2).
两个日期都是一样的,所以一个不在另一个之前.
来自javadoc:
当且仅当此Date对象表示的时刻严格早于when 表示的时刻时才返回true ; 否则是假的.
尝试类似的东西:
if(date1.before(date2) || date1.equals(date2)) ...
Run Code Online (Sandbox Code Playgroud)
下面提供的答案建议测试反向,他们是对的:
if(!date1.after(date2)) ...
Run Code Online (Sandbox Code Playgroud)
两个测试都是等价的.
bow*_*ore 49
你可以简单地测试逆:
!date1.after(date2)
Run Code Online (Sandbox Code Playgroud)
您始终可以通过这种方式将严格的订单检查转换为非严格的检查.从数学上来说:
a > b ? ¬ (a ? b)
Run Code Online (Sandbox Code Playgroud)
如果日期相同,那么显然一个不是在另一个之前:false is the correct return for date1.before(date2) where date1 == date2.
如果你需要包括相等,为什么不做一个否定.after()(显然如果日期1不是在日期2之后,那么它是相等的或之前),但我会确保这实际上是你想要完成的事情的正确逻辑.
如果相等是需要以不同方式处理的特殊情况,那么请对其进行单独测试.equals().
你可以使用像bowmore提出的逆向: !date1.after(date2)
或者,如果您正在寻找范围,可以包括端点,在这种情况下您可以 use return !d.before(min) && !d.after(max)
您也可以使用这个:
boolean check = dateOne.before(dateTwo) || DateUtils.isSameDay(dateOne, dateTwo);
Run Code Online (Sandbox Code Playgroud)
DateUtils 来自org.apache.commons.lang.time包
| 归档时间: |
|
| 查看次数: |
69688 次 |
| 最近记录: |