我的问题是从Temporal接口找到一个有用的方法。具体来说,我希望从一个实现Temporal接口的Object中获取年份。接口的所有方法只是添加或从对象中获取,但是,我只想获得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
是一个不支持年份的Temporal
实现。
它在superInterface TemporalAccessor
中定义。
所以你可以得到一年,
int year = temporal.get(ChronoField.YEAR);