Java Joda中间日期(LocalDate,LocalDate)不适用

Java Joda中间日期(LocalDate,LocalDate)不适用,java,datetime,jodatime,java-time,Java,Datetime,Jodatime,Java Time,我在使用Jodadays-between函数时遇到问题。它一直在告诉我 The method daysBetween(ReadableInstant, ReadableInstant) in the type Days is not applicable for the arguments (LocalDate, LocalDate) 当我尝试插入两个localdate项时 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M

我在使用Joda
days-between
函数时遇到问题。它一直在告诉我

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时间类
org.Joda.Time.LocalDate
。当然,表达式
Days.daysBetween(ReadablePartial,ReadablePartial)
可以,但您有问题吗?!这让我觉得你们的进口可能是错误的。事实上:

您还可以使用以下表达式:

但该代码不是Joda代码,而是Java-8-code。因此,您显然将不同的类
org.joda.time.LocalDate
java.time.LocalDate
混在了一起。这就是你的编译器所抱怨的。不要同时使用两个库。它们不兼容,部分相等的名称也没有帮助,但会增加混淆

解决方案:完全放弃Joda时间,因为您使用的是Java-8。您可以使用以下选项代替(…)之间的
Days.Days

long days = ChronoUnit.DAYS.between(date, date1);

一定是出了什么事——也许是你的进口货。表达式
Days.daysBetween(LocalDate,LocalDate)
必须是可编译的!!!如果没有,那么我怀疑您将
java.time.LocalDate
与同名的Joda类混合在一起(将不同的包放在一边)。请参阅我对其他答案的评论。没有必要转换为
DateTime
。是的,混淆之处在于我使用的是Java-8代码,而不是Joda代码,非常感谢:)