【问题标题】:Get correct temporal type from passed object从传递的对象中获取正确的时间类型
【发布时间】:2020-03-09 09:30:40
【问题描述】:

有没有办法确定传递对象的时间类型?目前我有一个Temporal 参数,它将Temporal 转换为LocalDate 并返回LocalDate 对象。

假设我在这个Temporal 参数中传递了一个LocalDateTime,该方法将引发异常。

有没有办法找出传递的时间的类型?

【问题讨论】:

标签: java localdate java-time


【解决方案1】:

我不知道您是如何转换为 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-13
    • 2019-08-22
    • 2018-10-08
    • 1970-01-01
    • 2022-01-27
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多