出现错误:日期中的 from(java.time.Instant) 无法应用于 (org.threeten.bp.instant)

Getting error: from(java.time.Instant) in Date cannot be applied to (org.threeten.bp.instant)

提问人:AkshayT 提问时间:6/24/2019 最后编辑:AnonymousAkshayT 更新时间:6/25/2019 访问量:2216

问:

我正在尝试将其转换为,但遇到了问题标题中提到的错误。org.threeten.bp.LocalDatejava.util.Date

我正在使用以下内容进行转换:

Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

错误:

from(java.time.Instant) in Date cannot be applied to (org.threeten.bp.instant)

我正在尝试转换

  1. LocalDate 到日期
  2. Date 到 LocalDate
java 类型不匹配 date-conversion java.util.date threetenbp

评论


答:

3赞 Anonymous 6/25/2019 #1

您的代码基本上是正确的,并且可以与 一起使用,只是不能与 中的相同类的实现一起使用。因此,您的选择有两个:java.time.LocalDateorg.threeten.bp.LocalDate

  1. 更改要使用的所有导入,而不是停止使用向后移植。java.timeorg.threeten.bp
  2. 用于旧版日期时间类与 ThreeTen Backport 中的类之间的转换。org.threeten.bp.DateTimeUtils

选项 2 的示例:

    LocalDate currentDate = LocalDate.now(ZoneId.of("America/Whitehorse"));
    Date d = DateTimeUtils.toDate(
            currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    System.out.println("" + currentDate + " was converted to " + d);

刚才在我的电脑上运行时,这个片段打印出来:

2019-06-25 已转换为 Tue Jun 25 00:00:00 CEST 2019

DateTimeUtils也有相反转换的方法。toInstant(Date)

链接:DateTimeUtils 文档

评论

0赞 AkshayT 6/25/2019
我切换到并完全删除了该库。但谢谢你的回答。我会尝试一下,如果它有效,我会接受答案。JodaTimeorg.threeten.bp
1赞 Anonymous 6/25/2019
很高兴你有东西可以工作。Joda-Time 官方建议:现在要求用户迁移到 java.time (JSR-310)。因此,您应该更喜欢 java.time(内置或通过向后移植)。更多信息请见Joda-Time主页。