Пакет java.time.chrono
Общий API для календарных систем, отличных от стандартной ISO.
Основной API базируется на календарной системе, определённой в ISO-8601. Однако существуют и другие календарные системы, и этот пакет предоставляет базовую поддержку для них. Альтернативные календари представлены в пакете java.time.chrono.
Календарная система определяется интерфейсом Chronology, а дата в календарной системе — интерфейсом ChronoLocalDate.
Предполагается, что приложения будут использовать основной API по возможности, включая код для чтения и записи из постоянного хранилища данных, такого как база данных, а также для отправки дат и времён по сети. Классы "chrono" затем используются на уровне пользовательского интерфейса для обработки локализованного ввода/вывода. Подробное обсуждение проблем можно найти в ChronoLocalDate.
Использование не-ISO календарных систем в приложении добавляет значительную дополнительную сложность. Убедитесь, что вы прочитали предупреждения и рекомендации в ChronoLocalDate перед работой с интерфейсами "chrono".
Поддерживаемые календарные системы включают:
Пример
Этот пример отображает сегодняшнюю дату для всех доступных календарей.
// 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);
Этот пример создаёт и использует дату в конкретной системе календаря Тайского буддизма.
// 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. Описание поведения при null-аргументах приведено в Javadoc "@param". Исключение "@throws NullPointerException" не документируется явно в каждом методе.
Все вычисления должны проверять переполнение чисел и выбрасывать либо исключение ArithmeticException, либо DateTimeException.
- Since:
- 1.8
| Класс | Описание |
|---|---|
| AbstractChronology | Абстрактная реализация календарной системы, используемая для организации и идентификации дат. |
| ChronoLocalDate | Дата без времени суток или часового пояса в произвольной хронологии, предназначенная для сложных случаев глобализации. |
| ChronoLocalDateTime<D extends ChronoLocalDate> | Дата и время без часового пояса в произвольной хронологии, предназначенная для сложных случаев глобализации. |
| Chronology | Календарная система, используемая для организации и идентификации дат. |
| ChronoPeriod | Временной интервал на основе дат, например, '3 года, 4 месяца и 5 дней' в произвольной хронологии, предназначенный для сложных случаев глобализации. |
| ChronoZonedDateTime<D extends ChronoLocalDate> | Дата и время с часовым поясом в произвольной хронологии, предназначенная для сложных случаев глобализации. |
| Era | Эра временной линии. |
| HijrahChronology | Календарь Хиджры — лунный календарь, поддерживающий исламские календари. |
| HijrahDate | Дата в календарной системе Хиджры. |
| HijrahEra | Эра в календарной системе Хиджры. |
| IsoChronology | Календарная система ISO. |
| IsoEra | Эра в календарной системе ISO. |
| JapaneseChronology | Японская императорская календарная система. |
| JapaneseDate | Дата в японской императорской календарной системе. |
| JapaneseEra | Эра в японской императорской календарной системе. |
| MinguoChronology | Календарная система Минуо. |
| MinguoDate | Дата в календарной системе Минуо. |
| MinguoEra | Эра в календарной системе Минуо. |
| ThaiBuddhistChronology | Календарная система Тайского буддизма. |
| ThaiBuddhistDate | Дата в календарной системе Тайского буддизма. |
| ThaiBuddhistEra | Эра в календарной системе Тайского буддизма. |
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/chrono/package-summary.html