获取错误:日期中的from(java.time.Instant)不能应用于(org.threeten.bp.Instant)

获取错误:日期中的from(java.time.Instant)不能应用于(org.threeten.bp.Instant),java,type-mismatch,date-conversion,java.util.date,threetenbp,Java,Type Mismatch,Date Conversion,Java.util.date,Threetenbp,我正在尝试将org.threeten.bp.LocalDate转换为java.util.Date,我得到了问题标题中提到的错误 我使用以下方法进行转换: Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); 错误: from(java.time.Instant) in Date cannot be applied to (org.threeten.bp.instant) 我正在努力改变信仰 本地日期到

我正在尝试将
org.threeten.bp.LocalDate
转换为
java.util.Date
,我得到了问题标题中提到的错误

我使用以下方法进行转换:

Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
错误:

from(java.time.Instant) in Date cannot be applied to (org.threeten.bp.instant)
我正在努力改变信仰

  • 本地日期到日期
  • 日期到本地日期

  • 您的代码基本上是正确的,可以使用
    java.time.LocalDate
    ,但不能在
    org.threeten.bp.LocalDate
    中实现相同的类。因此,您有两种选择:

  • 将所有导入更改为使用
    java.time
    而不是
    org.threeten.bp
    并停止使用backport
  • 使用
    org.threeten.bp.DateTimeUtils
    在遗留日期时间类和threeten Backport中的类之间进行转换
  • 选项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转换为2019年6月25日星期二00:00:00 CEST

    DateTimeUtils
    还有一个用于相反转换的
    toInstant(Date)
    方法


    链接:

    我切换到
    JodaTime
    并完全删除了
    org.threeten.bp
    库。但是谢谢你的回答。我会尝试一下,如果成功的话,我会接受答案。很高兴你找到了工作。Joda Time正式建议:现在要求用户迁移到
    java.Time
    (JSR-310)。因此,您应该更喜欢java.time(内置或通过后端口)。更多关于。