如何在Java8中使用LocalDate实现LessThanOrEqual和GreaterThanOrEqual

问题描述 投票:0回答:3

我想测试一个日期是小于或等于GreaterThanOrEqualTo。 我在 LocalDateAPI 中找不到任何相关函数。有 isBeforeisEqualisAfter .

我添加一天并减去一天以达到相同的效果。有没有更好的功能可以实现相同的功能?

            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));

                }
java localdate
3个回答
2
投票

看起来你可以使用Date.compareTo()。如果日期相等,则返回值为 0;如果日期在参数日期之后,则返回值大于 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


0
投票

@JoeC 和 @Arthur 的评论中提供了最佳答案。只需反转 isBefore 和 isAfter,如下所示:

greaterThanOrEqualTo 实际上与

相同

!date1.isBefore(date2)

lessThanOrEqual 实际上与

相同

!date1.isAfter(date2)

或者作为一种方法:

boolean greaterThanOrEqualTo(LocalDate date1, LocalDate date2) {
    return !date1.isBefore(date2)
}
© www.soinside.com 2019 - 2024. All rights reserved.