错误提示:Date中的from(java.time.Instant)无法应用于(org.threeten.bp.instant)

时间:2019-06-24 04:07:40

标签: 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)

我正在尝试转换

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

1 个答案:

答案 0 :(得分:0)

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

  1. 将所有导入内容更改为使用java.time而不是org.threeten.bp,并停止使用反向端口。
  2. 使用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

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

链接: DateTimeUtils documentation