从传递的对象中获取正确的时间类型
Get correct temporal type from passed object
有没有办法确定传递对象的时间类型?目前我有一个 Temporal
参数,可以将 Temporal
变成 LocalDate
和 returns LocalDate
对象。
假设我在这个 Temporal
参数中传递一个 LocalDateTime
,该方法将引发异常。
有没有办法找出传递时间的类型?
我不知道你是如何转换成 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)
有没有办法确定传递对象的时间类型?目前我有一个 Temporal
参数,可以将 Temporal
变成 LocalDate
和 returns LocalDate
对象。
假设我在这个 Temporal
参数中传递一个 LocalDateTime
,该方法将引发异常。
有没有办法找出传递时间的类型?
我不知道你是如何转换成 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)