Получение ошибки: из (java.time.Instant) в Date нельзя применить к (org.threeten.bp.instant) - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь преобразовать 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. LocalDate to Date
  2. Дата до LocalDate

1 Ответ

0 голосов
/ 25 июня 2019

Ваш код в основном правильный и работал бы с 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 был преобразован в вторник, 25 июня 00:00:00 CEST 2019

DateTimeUtils также имеет метод toInstant(Date) для обратного преобразования.

Ссылка: DateTimeUtils Документация

...