模块 java.base
Package java.time.chrono
除默认ISO之外的日历系统的通用API。
主API基于ISO-8601中定义的日历系统。 但是,还有其他日历系统,此软件包为它们提供基本支持。 java.time.chrono
包中提供了备用日历。
日历系统由Chronology
接口定义,而日历系统中的日期由ChronoLocalDate
接口定义。
应用程序旨在尽可能使用主API,包括从持久性数据存储(如数据库)读取和写入的代码,以及通过网络发送日期和时间。 然后在用户界面级别使用“chrono”类来处理本地化的输入/输出。 有关这些问题的完整讨论,请参见ChronoLocalDate
。
在应用程序中使用非ISO日历系统会带来显着的额外复杂性。 在使用“ ChronoLocalDate
”接口之前, ChronoLocalDate
确保已阅读ChronoLocalDate
中的警告和建议。
支持的日历系统包括:
例
此示例列出了所有可用日历的今天日期。
// Enumerate the list of available calendars and print todays 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”定义用于概括null行为。 每个方法都没有明确记录“ @throws NullPointerException
”。
所有计算都应检查数字溢出并抛出ArithmeticException
或DateTimeException
。
- 从以下版本开始:
- 1.8
-
接口摘要 接口 描述 ChronoLocalDate 用于高级全球化用例的任意时间表中没有时间或时区的日期。ChronoLocalDateTime<D extends ChronoLocalDate> 用于高级全球化用例的任意时间顺序中没有时区的日期时间。Chronology 日历系统,用于组织和识别日期。ChronoPeriod 用于高级全球化用例的基于日期的时间量,例如任意年表中的“3年,4个月和5天”。ChronoZonedDateTime<D extends ChronoLocalDate> 用于高级全球化用例的具有任意时间顺序的时区的日期时间。Era 时间线的时代。 -
类摘要 类 描述 AbstractChronology 日历系统的抽象实现,用于组织和标识日期。HijrahChronology Hijrah日历是支持伊斯兰日历的阴历。HijrahDate Hijrah日历系统中的日期。IsoChronology ISO日历系统。JapaneseChronology 日本帝国的历法系统。JapaneseDate 日本帝国日历系统中的日期。JapaneseEra 日本帝国历法系统的一个时代。MinguoChronology 民国历法系统。MinguoDate 民国历法系统的约会。ThaiBuddhistChronology 泰国佛教日历系统。ThaiBuddhistDate 泰国佛教日历系统中的约会。 -
枚举摘要 Enum 描述 HijrahEra Hijrah日历系统的一个时代。IsoEra ISO日历系统的一个时代。MinguoEra 民国历法系统的一个时代。ThaiBuddhistEra 泰国佛教历法系统的一个时代。