Joda betweenDays (LocalDate,LocalDate) 不适用

Joda betweenDays (LocalDate,LocalDate) not applicable

我在使用 Joda daysBetween 功能时遇到问题。它一直告诉我

The method daysBetween(ReadableInstant, ReadableInstant) in the type Days is not applicable for the arguments (LocalDate, LocalDate)

当我尝试插入两个 localdate 项时。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
        LocalDate date = LocalDate.parse(reviewDate, formatter);
        Date dateNow = new Date();
        LocalDate date1 = LocalDate.parse(dateNow.toString(),formatter);
        int days = Days.daysBetween(date,date1).getDays();

我正在尝试获取 reviewDate 和当前日期之间的天数 date1 我做错了什么?

您应该使用以下方法之一将 LocalDate 转换为 DateTime

LocalDate::toDateTimeAtCurrentTime()
LocalDate::toDateTimeAtStartOfDay()
LocalDate::toDateTime( LocalTime )
LocalDate::toDateTime( LocalTime , DateTimeZone )

然后将 DateTime 传递给 daysBetween() 方法。

你说的是 Joda-Time-classorg.joda.time.LocalDate。当然,表达式Days.daysBetween(ReadablePartial,ReadablePartial)可以process such an input without problems,但是你有问题吗?!这让我觉得你的导入可能是错误的。事实上:

你也用这个表达:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);

但该代码不是 Joda 代码,它是 Java-8 代码。所以你显然混淆了不同的 classes org.joda.time.LocalDatejava.time.LocalDate。这就是您的编译器所抱怨的。不要混合使用这两个库。它们不兼容,部分相同的名称也无济于事,反而会增加混乱。

解决方案: 完全放弃 Joda-Time,因为您正在使用 Java-8。您可以使用:

而不是 Days.daysBetween(...)
long days = ChronoUnit.DAYS.between(date, date1);