java - Joda betweenDays (LocalDate,LocalDate) 不适用

标签 java datetime jodatime java-time

我在使用 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 之间的天数,我做错了什么?

最佳答案

你说的是 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.LocalDatejava.time.LocalDate。这就是您的编译器所提示的。不要混合使用这两个库。它们不兼容,部分相同的名称也无济于事,反而会增加混淆。

解决方案: 完全放弃 Joda-Time,因为您使用的是 Java-8。代替 Days.daysBetween(...) 你可以使用:

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

关于java - Joda betweenDays (LocalDate,LocalDate) 不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878936/

相关文章:

ruby - ruby 中是否有针对 ISO 8601 的综合库/模块?

c# - 更快更有效地更改日期格式

spring-mvc - 如何在 Spring MVC 中使用 Jackson 和 Jersey 2 Client 反序列化 Joda DateTime?

java - OrientGraph 中的 OConcurrentModificationException

java - Jsoup:String element.attr() 在 if() 中不起作用

java - "Registered factory needed"加载资源时出现异常

java - java.time 中的 joda.ISODateTimeFormat 是否等效?

Java - 为什么即使调用了有效资源,也会执行自定义 404 错误页面?

php - 一个 MySQL 查询中基于不同日期范围的平均值选择语句

scala - 如何通过嵌套查询从 Slick 中的日期时间表中选择最新记录