我想测试一个日期是小于或等于或GreaterThanOrEqualTo。 我在 LocalDateAPI 中找不到任何相关函数。有 isBefore、isEqual 和 isAfter .
我添加一天并减去一天以达到相同的效果。有没有更好的功能可以实现相同的功能?
boolean isGTOperator = filterOperator == OperatorEnum.GT;
boolean isLTOperator = filterOperator == OperatorEnum.LT;
boolean isLTEqualOperator = filterOperator == OperatorEnum.LTE;
boolean isGTEqualOperator = filterOperator == OperatorEnum.GTE;
if (isGTOperator ) {
return (myDate).isAfter(filterDate);
} else if (isGTEqualOperator ) {
return (myDate).isAfter(filterDate.plusDays(1));
}
else if (isLTOperator ) {
return ( myDate).isBefore(filterDate);
} else if (isLTEqualOperator ) {
return (myDate).isBefore(filterDate.minusDays(1));
}
看起来你可以使用Date.compareTo()。如果日期相等,则返回值为 0;如果日期在参数日期之后,则返回值大于 0;如果日期在参数日期之前,则返回值小于 0。 这是一个有用的参考。
假设您有两个日期,即 date1 和 date2
第一种方法 Date.compareTo()
如果两个日期相等,则返回 0
如果 date1 大于 date2,则返回大于 0 的值。
date1.compareTo(date2)>0
如果 date1 小于 date2,则返回小于 0 的值。
date1.compareTo(date2)<0
第二种方法等于、之前、之后
这些方法按其名称工作,即
if(date1.equals(date2)){System.out.println("true");}
if(date1.after(date2)){System.out.println("true");}
if(date1.before(date2)){System.out.println("true");}
注意以上方法用于比较Date()即java.util.Date
@JoeC 和 @Arthur 的评论中提供了最佳答案。只需反转 isBefore 和 isAfter,如下所示:
greaterThanOrEqualTo 实际上与
相同!date1.isBefore(date2)
lessThanOrEqual 实际上与
相同!date1.isAfter(date2)
或者作为一种方法:
boolean greaterThanOrEqualTo(LocalDate date1, LocalDate date2) {
return !date1.isBefore(date2)
}