Java 从传递的对象获取正确的时态类型
有没有办法确定传递对象的时间类型?目前我有一个Java 从传递的对象获取正确的时态类型,java,localdate,java-time,Java,Localdate,Java Time,有没有办法确定传递对象的时间类型?目前我有一个Temporal参数,它将Temporal转换为LocalDate并返回LocalDate对象 假设我在此Temporal参数中传递了LocalDateTime,该方法将引发异常 有没有办法找出传递的时态的类型?我不知道您是如何转换到LocalDate的。我相信这一个有效 /** * @throws DateTimeException if the <code>Temporal</code> hasn’t got * en
Temporal
参数,它将Temporal
转换为LocalDate
并返回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));
刚才我运行这段代码时,得到了以下输出:
当然,它不适用于任何时态
convertToLocalDate(Year.of(2021));
向我们展示您的代码和异常消息,以及传入“LocalDateTime”时您希望发生的情况。我想您可以在这里找到答案
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)