如何在 Java 中获取时间年份

How to get the Year of a Temporal in Java

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

它在其超接口中定义 TemporalAccessor

所以你可以得到年份,

int year = temporal.get(ChronoField.YEAR);

Temporal interface inherits the TemporalAccessor::get方法,例如你可以这样做:

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

输出:

2018

编辑

作为 is good to validate if the Temporal implementation supports the desired field using Temporal::isSupported:

if(t.isSupported(ChronoField.YEAR)){
   // ...
}

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