Java Joda中间日期(LocalDate,LocalDate)不适用
我在使用JodaJava 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
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代码,非常感谢:)