我的问题是从Temporal接口中找到一种有用的方法。具体来说,我想从一个对象中获得年份,该对象正在实现Temporal接口。接口的所有方法都只是从对象中添加或替换对象,但是,我只想获取Temporal本身的年份。

最佳答案

Temporal 接口继承了 TemporalAccessor::get 方法,因此您可以执行以下操作:

Temporal t = LocalDate.now();
System.out.println(t.get(ChronoField.YEAR));

输出:
2018

编辑

由于@Ole V.V. pointed out可以很好地验证Temporal实现是否支持使用 Temporal::isSupported 的所需字段:
if(t.isSupported(ChronoField.YEAR)){
   // ...
}

如果Temporal实现不支持所需的字段,这将防止获取异常。例如, Instant 是不支持Year的Temporal实现。

09-05 01:24