Пакет 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 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. Описание поведения при null-аргументе приводится в комментариях Javadoc с использованием тега «@param». Исключение «@throws NullPointerException» не документируется явно в каждом методе.
Все вычисления должны проверять переполнение и выбрасывать исключение ArithmeticException или DateTimeException.
- Since:
- 1.8
| Интерфейс | Описание |
|---|---|
| ChronoLocalDate | Дата без времени суток или часового пояса в произвольной хронологии, предназначенная для сложных задач глобализации. |
| ChronoLocalDateTime<D extends ChronoLocalDate> | Дата и время без часового пояса в произвольной хронологии, предназначенная для сложных задач глобализации. |
| Chronology | Календарная система, используемая для организации и идентификации дат. |
| ChronoPeriod | Временной интервал, основанный на дате, например, '3 года, 4 месяца и 5 дней' в произвольной хронологии, предназначенный для сложных задач глобализации. |
| ChronoZonedDateTime<D extends ChronoLocalDate> | Дата и время с часовым поясом в произвольной хронологии, предназначенная для сложных задач глобализации. |
| Era | Эра временной шкалы. |
| Класс | Описание |
|---|---|
| AbstractChronology | Абстрактная реализация календарной системы, используемая для организации и идентификации дат. |
| HijrahChronology | Календарь Хиджры — лунный календарь, поддерживающий исламские календари. |
| HijrahDate | Дата в календарной системе Хиджры. |
| IsoChronology | Календарная система ISO. |
| JapaneseChronology | Японская имперская календарная система. |
| JapaneseDate | Дата в японской имперской календарной системе. |
| JapaneseEra | Эра в японской имперской календарной системе. |
| MinguoChronology | Календарная система Minguo. |
| MinguoDate | Дата в календарной системе Minguo. |
| ThaiBuddhistChronology | Тайский буддийский календарь. |
| ThaiBuddhistDate | Дата в тайском буддийском календаре. |
| Перечисление | Описание |
|---|---|
| HijrahEra | Эра в календарной системе Хиджры. |
| IsoEra | Эра в календарной системе ISO. |
| MinguoEra | Эра в календарной системе Minguo. |
| ThaiBuddhistEra | Эра в тайском буддийском календаре. |
© 1993, 2020, 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://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/chrono/package-summary.html