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

Getting error: 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)

我正在尝试转换

  1. 本地日期至今
  2. 日期为 LocalDate

您的代码基本上是正确的,可以与 java.time.LocalDate 一起使用,只是不能与 org.threeten.bp.LocalDate 中相同的 class 的实现一起使用。所以你的选择有两个:

  1. 将所有导入更改为使用 java.time 而不是 org.threeten.bp 并停止使用反向端口。
  2. 使用 org.threeten.bp.DateTimeUtils 在旧版 date-time classes 和 ThreeTen Backport 中的 classes 之间进行转换。

选项 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 was converted to Tue Jun 25 00:00:00 CEST 2019

DateTimeUtils也有一个toInstant(Date)方法进行相反的转换。

Link: DateTimeUtils documentation