java 日期时间 api 中获取当前时间的 chronoyear,最直接的方式是使用 java.time.chrono.chronology.systemdefault() 获取默认时区的 chronology 实例,然后调用其 year() 方法并传入当前的 localdate。这样得到的 chronoyear 对象代表了基于系统默认日历系统(通常是 iso-8601)的当前年份实体,它支持跨日历系统的操作。

如何从特定 Chronology 获取 ChronoYear
如果需要使用非默认的日历系统(例如日本和历或佛教历),可以通过 Chronology.of() 指定具体的 chronology ID,再结合 TemporalQuery 或直接查询来获取该日历下的当前年份。核心在于先确定目标 chronology,再将其应用到当前时间点。

import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.chrono.ChronoLocalDate;
import java.time.chrono.ChronoYear;
public class ChronoYearExample {
public static void main(String[] args) {
// 获取默认 Chronology (ISO)
Chronology isoChrono = Chronology.systemDefault();
LocalDate now = LocalDate.now();
// 获取 ISO 日历下的当前 ChronoYear
ChronoYear isoYear = isoChrono.year().getFrom(now);
System.out.println("ISO Year: " + isoYear.get());
// 获取日本日历下的当前 ChronoYear
Chronology japaneseChrono = Chronology.of("Japanese");
if (japaneseChrono != null) {
ChronoLocalDate jDate = japaneseChrono.date(now);
ChronoYear jYear = japaneseChrono.year().getFrom(jDate);
System.out.println("Japanese Year: " + jYear.get());
}
}
}
ChronoYear 与 int 年份的区别及验证
ChronoYear 是一个面向对象的年份表示,它不仅包含数值,还关联了特定的日历系统。与直接使用 int 不同,ChronoYear 可以处理不同历法中年份长度的差异(如闰年、闰月等)。通过比较同一时刻在不同日历系统下生成的 ChronoYear,可以验证其实际行为。

import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.chrono.ChronoYear;
import java.util.Map;
import java.util.TreeMap;
public class ChronoYearComparison {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
Map<string integer> yearMap = new TreeMap();
// 收集主要日历系统的当前年份
String[] chronoIds = {"ISO", "Japanese", "ThaiBuddhist", "Minguo"};
for (String id : chronoIds) {
Chronology chrono = Chronology.of(id);
if (chrono != null) {
ChronoYear year = chrono.year().getFrom(chrono.date(now));
yearMap.put(id, year.get());
}
}
// 输出结果以验证
yearMap.forEach((k, v) -> System.out.println(k + " Year: " + v));
}
}</string>
上述代码展示了如何遍历多个日历系统并提取其对应的年份数值。运行结果将显示同一物理时间在 ISO、Japanese、ThaiBuddhist 和 Minguo 日历下的具体年份数字。例如,2023 年在 ISO 下是 2023,而在 Japanese 历下可能是令和 5 年(取决于具体实现和转换逻辑,通常 JAPI 会映射为相应的纪元年)。这证明了 ChronoYear 能够正确封装不同历法的年份语义。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











