我正在编写一个在日期中需要非常准确的应用程序,我想知道如何比较LocalDate实例..现在我使用的是:
LocalDate localdate1 = LocalDate().now();
LocalDate localdate2 = someService.getSomeDate();
localdate1.equals(localdate2);
但我注意到我的应用程序给了我一些令人困惑的结果,我认为这是因为比较日期。
我正在考虑从1970年开始获得时间'长期比较那两个,但我必须更容易,我相信它
答案 0 :(得分:81)
使用equals()
LocalDate
确实覆盖了等于:
int compareTo0(LocalDate otherDate) {
int cmp = (year - otherDate.year);
if (cmp == 0) {
cmp = (month - otherDate.month);
if (cmp == 0) {
cmp = (day - otherDate.day);
}
}
return cmp;
}
如果您对equals()
的结果不满意,可以使用LocalDate
的预定义方法。
请注意,所有这些方法都使用compareTo0()
方法,只检查cmp
值。如果你仍然得到奇怪的结果(你不应该),请附上输入和输出的例子
答案 1 :(得分:0)
我相信这个代码段在日期比较超过两个条目的情况下也会有所帮助。
static final int COMPARE_EARLIEST = 0;
static final int COMPARE_MOST_RECENT = 1;
public LocalDate getTargetDate(List<LocalDate> datesList, int comparatorType) {
LocalDate refDate = null;
switch(comparatorType)
{
case COMPARE_EARLIEST:
//returns the most earliest of the date entries
refDate = (LocalDate) datesList.stream().min(Comparator.comparing(item ->
item.toDateTimeAtCurrentTime())).get();
break;
case COMPARE_MOST_RECENT:
//returns the most recent of the date entries
refDate = (LocalDate) datesList.stream().max(Comparator.comparing(item ->
item.toDateTimeAtCurrentTime())).get();
break;
}
return refDate;
}
答案 2 :(得分:0)
LocalDate ld ....;
LocalDateTime ldtime ...;
ld.isEqual(LocalDate.from(ldtime));