我的问题是从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
实现。