如何在 Java 中获取 Temporal 的年份

Pom*_*ica 3 java java-8 java-time

我的问题是从 Temporal 接口中找到一个有用的方法。具体来说,我想从一个实现 Temporal 接口的对象中获取年份。接口的所有方法都只是从对象中添加或删除,但是,我只想获取时间本身的年份。

Jua*_*oza 5

接口Temporal继承了TemporalAccessor::get方法,因此例如您可以这样做:

Temporal t = LocalDate.now();
System.out.println(t.get(ChronoField.YEAR));
Run Code Online (Sandbox Code Playgroud)

输出:

2018
Run Code Online (Sandbox Code Playgroud)

编辑

正如@Ole VV 指出的那样,使用以下方法可以很好地验证Temporal实现是否支持所需的字段Temporal::isSupported

if(t.isSupported(ChronoField.YEAR)){
   // ...
}
Run Code Online (Sandbox Code Playgroud)

Temporal如果实现不支持所需的字段,这将防止出现异常。例如,Instant是一个Temporal不支持年份的实现。

  • 正确答案。请记住先检查 `t.isSupported​(ChronoField.YEAR)`。 (2认同)