Получить правильный временной тип из переданного объекта - PullRequest
0 голосов
/ 09 марта 2020

Есть ли способ определения временного типа передаваемого объекта? В настоящее время у меня есть параметр Temporal, который превращает Temporal в LocalDate и возвращает объект LocalDate.

Если я передам LocalDateTime в этом параметре Temporal, метод будет вызвать исключение.

Есть ли способ узнать тип переданного временного?

1 Ответ

0 голосов
/ 13 марта 2020

Я не знаю, как вы конвертировали в LocalDate. Я считаю, что это работает.

/**
 * @throws DateTimeException if the <code>Temporal</code> hasn’t got
 * enough supported fields for a <code>LocalDate</code>.
 */
public static LocalDate convertToLocalDate(Temporal t) {
    return LocalDate.from(t);
}

У него нет проблем с принятием LocalDateTime:

    LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Asia/Qyzylorda"));
    System.out.println("As LocalDate: " + convertToLocalDate(ldt));

Когда я только что запустил этот код, я получил такой вывод:

As LocalDate: 2020-03-13

Конечно, это вообще не работает для любого Temporal.

    convertToLocalDate(Year.of(2021));
Exception in thread "main" java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2021 of type java.time.Year
  at java.base/java.time.LocalDate.from(LocalDate.java:396)
  at com.ajax.Demo.convertToLocalDate(ConvertTemporalToLocalDate.java:18)
  at com.ajax.Demo.main(ConvertTemporalToLocalDate.java:25)
...