使用 chronocentury 获取当前时间的核心做法是调用 localdate.now() 获取当前日期,然后利用 temporaladjusters.firstdayofcentury() 将日期调整到该世纪的第一天。这样得到的 localdate 对象即代表当前的世纪(例如 2024 年对应 2001-01-01)。若需直接获取世纪数值,可结合 yearperiod 或手动计算年份除以 100 的整数部分。

如何获取当前世纪的第一天作为 LocalDate?
通过 TemporalAdjusters.firstDayOfCentury() 可以直接获得当前世纪起始日期的 LocalDate 实例。该调整器会自动处理闰世纪等边界情况,返回如 2001-01-01 这样的标准世纪首日。

import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class CenturyExample {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取当前世纪的第一天
LocalDate firstDayOfCentury = today.with(TemporalAdjusters.firstDayOfCentury());
System.out.println("Today: " + today);
System.out.println("First day of century: " + firstDayOfCentury);
}
}运行上述代码,假设今天是 2024 年 5 月 20 日,输出结果将为:
Today: 2024-05-20
First day of century: 2001-01-01
立即学习“Java免费学习笔记(深入)”;
如何从 LocalDate 中提取世纪的数值表示?
Java 8 的 java.time API 没有直接的 getCentury() 方法,但可以通过 getYear() 获取年份,然后除以 100 并加 1 来得到世纪数。例如,2024 年属于第 21 世纪。

import java.time.LocalDate;
public class CenturyNumberExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
int year = today.getYear();
int century = (year / 100) + 1;
System.out.println("Year: " + year);
System.out.println("Century Number: " + century);
}
}对于 2024 年,year / 100 结果为 20,加 1 后得到 21,符合 ISO 8601 标准的世纪计数。
如果输入日期是某世纪的最后一年,firstDayOfCentury 会返回什么?
当输入日期为某世纪的最后一年(如 2099 年)时,TemporalAdjusters.firstDayOfCentury() 依然会返回该世纪的第一天(2001-01-01),因为该调整器的逻辑是基于“当前日期所在的世纪”而非“当前日期的年份”。它不随年份接近世纪末而改变目标世纪,始终锚定在同一个世纪的起点。


















