我在使用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
之间的天数我做错了什么?
答案 0 :(得分:3)
你说的是Joda-Time-class org.joda.time.LocalDate
。当然,表达式Days.daysBetween(ReadablePartial,ReadablePartial)
可以process such an input without problems,但你有问题吗?!这让我觉得你的进口可能是错的。事实上:
您也可以使用以下表达式:
DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
但该代码不是Joda代码,而是Java-8代码。因此,您显然会将不同的类org.joda.time.LocalDate
与java.time.LocalDate
混淆。这就是你的编译器所抱怨的。不要混合两个库。它们不兼容,部分相同的名称也无济于事,但会增加混淆。
解决方案:完全放弃Joda-Time,因为您使用的是Java-8。您可以使用以下Days.daysBetween(...)
代替:
long days = ChronoUnit.DAYS.between(date, date1);
答案 1 :(得分:2)
您应该使用以下方法之一将LocalDate
转换为DateTime
LocalDate::toDateTimeAtCurrentTime()
LocalDate::toDateTimeAtStartOfDay()
LocalDate::toDateTime( LocalTime )
LocalDate::toDateTime( LocalTime , DateTimeZone )
然后您将DateTime
传递给daysBetween()
方法。