有没有办法确定传递对象的时间类型?当前,我有一个Temporal
参数,该参数将Temporal
转换为LocalDate
并返回LocalDate
对象。
假设我在此LocalDateTime
参数中传递了Temporal
,则该方法将引发异常。
有没有办法找出传递的时间类型?
最佳答案
我不知道您是如何转换为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)