模块 java.base
包 java.time.chrono
包java.time.chrono
用于除默认 ISO 之外的日历系统的通用 API。
主要 API 基于 ISO-8601 中定义的日历系统。但是,还有其他日历系统,这个包为它们提供了基本支持。备用日历在 java.time.chrono 包中提供。
日历系统由Chronology 接口定义,而日历系统中的日期由ChronoLocalDate 接口定义。
它旨在让应用程序尽可能使用主要 API,包括从持久性数据存储(例如数据库)读取和写入的代码,以及通过网络发送日期和时间的代码。然后在用户界面级别使用“chrono”类来处理本地化的输入/输出。有关问题的完整讨论,请参阅 ChronoLocalDate 。
在应用程序中使用非 ISO 日历系统会带来显着的额外复杂性。确保在使用“chrono”接口之前已阅读 ChronoLocalDate 中的警告和建议。
支持的日历系统包括:
示例
此示例列出了所有可用日历的今天日期。
// Enumerate the list of available calendars and print today's date for each.
Set<Chronology> chronos = Chronology.getAvailableChronologies();
for (Chronology chrono : chronos) {
ChronoLocalDate date = chrono.dateNow();
System.out.printf(" %20s: %s%n", chrono.getId(), date.toString());
}
此示例在命名的非 ISO 日历系统中创建和使用日期。
// Print the Thai Buddhist date
ChronoLocalDate now1 = Chronology.of("ThaiBuddhist").dateNow();
int day = now1.get(ChronoField.DAY_OF_MONTH);
int dow = now1.get(ChronoField.DAY_OF_WEEK);
int month = now1.get(ChronoField.MONTH_OF_YEAR);
int year = now1.get(ChronoField.YEAR);
System.out.printf(" Today is %s %s %d-%s-%d%n", now1.getChronology().getId(),
dow, day, month, year);
// Print today's date and the last day of the year for the Thai Buddhist Calendar.
ChronoLocalDate first = now1
.with(ChronoField.DAY_OF_MONTH, 1)
.with(ChronoField.MONTH_OF_YEAR, 1);
ChronoLocalDate last = first
.plus(1, ChronoUnit.YEARS)
.minus(1, ChronoUnit.DAYS);
System.out.printf(" %s: 1st of year: %s; end of year: %s%n", last.getChronology().getId(),
first, last);
此示例在特定的 ThaiBuddhist 日历系统中创建和使用日期。
// Print the Thai Buddhist date
ThaiBuddhistDate now1 = ThaiBuddhistDate.now();
int day = now1.get(ChronoField.DAY_OF_MONTH);
int dow = now1.get(ChronoField.DAY_OF_WEEK);
int month = now1.get(ChronoField.MONTH_OF_YEAR);
int year = now1.get(ChronoField.YEAR);
System.out.printf(" Today is %s %s %d-%s-%d%n", now1.getChronology().getId(),
dow, day, month, year);
// Print today's date and the last day of the year for the Thai Buddhist Calendar.
ThaiBuddhistDate first = now1
.with(ChronoField.DAY_OF_MONTH, 1)
.with(ChronoField.MONTH_OF_YEAR, 1);
ThaiBuddhistDate last = first
.plus(1, ChronoUnit.YEARS)
.minus(1, ChronoUnit.DAYS);
System.out.printf(" %s: 1st of year: %s; end of year: %s%n", last.getChronology().getId(),
first, last);
包装规格
除非另有说明,否则将 null 参数传递给此包中任何类或接口中的构造函数或方法将导致抛出 NullPointerException 。 Javadoc“@param”定义用于总结空行为。每个方法中都没有明确记录“@throws NullPointerException ”。
所有计算都应检查数字溢出并抛出 ArithmeticException 或 DateTimeException 。
- 自从:
- 1.8
-
类描述日历系统的抽象实现,用于组织和标识日期。在任意时间顺序中没有时间或时区的日期,用于高级全球化用例。ChronoLocalDateTime <D 扩展 ChronoLocalDate >任意时间顺序中没有时区的日期时间,用于高级全球化用例。日历系统,用于组织和标识日期。基于日期的时间量,例如任意时间顺序中的“3 年、4 个月和 5 天”,用于高级全球化用例。ChronoZonedDateTime <D 扩展 ChronoLocalDate >具有任意时间顺序的时区的日期时间,用于高级全球化用例。时间线时代。回历是支持伊斯兰历的农历。Hijrah 日历系统中的日期。Hijrah 日历系统中的一个纪元。ISO日历系统。ISO 日历系统中的纪元。日本皇历系统。日本皇历系统中的日期。日本皇历系统中的一个纪元。民国历法。民国历系统中的日期。Minguo历法系统中的一个纪元.泰国佛教日历系统。泰国佛教日历系统中的日期。泰国佛历系统中的一个纪元。