Spec-Zone.ru › OpenJDK 21

Пакет java.time.chrono

package java.time.chrono

Общий API для календарных систем, отличных от стандартной ISO.

Основной API основан на календарной системе, определённой в ISO-8601. Однако существуют и другие календарные системы, и этот пакет предоставляет базовые средства их поддержки. Альтернативные календари предоставляются в пакете java.time.chrono.

Календарная система определяется интерфейсом Chronology, а дата в календарной системе — интерфейсом ChronoLocalDate.

Предполагается, что приложения будут использовать основной API по возможности, включая код для чтения и записи из постоянного хранилища данных, например, базы данных, и для передачи дат и времени по сети. Классы «chrono» затем используются на уровне пользовательского интерфейса для обработки локализованного ввода/вывода. Подробное обсуждение проблем см. в ChronoLocalDate.

Использование не-ISO календарных систем в приложении добавляет значительную сложность. Убедитесь, что вы ознакомились с предупреждениями и рекомендациями в ChronoLocalDate перед работой с интерфейсами «chrono».

Поддерживаемые календарные системы включают:

  • Hijrah calendar
  • Japanese calendar
  • Minguo calendar
  • Thai Buddhist calendar

Пример

Этот пример отображает сегодняшнюю дату для всех доступных календарей.

   // 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» используется для обобщения поведения при null-аргументе. Исключение «@throws NullPointerException» не документируется явно в каждом методе.

Все вычисления должны проверять переполнение чисел и выбрасывать исключение либо ArithmeticException, либо DateTimeException.

Since:
1.8
Пакет Описание
java.time
Основной API для дат, времён, моментов времени и продолжительностей.
java.time.format
Предоставляет классы для печати и разбора дат и времён.
java.time.temporal
Доступ к датам и времени с использованием полей и единиц измерения, а также корректоров дат и времён.
java.time.zone
Поддержка часовых поясов и их правил.
Класс Описание
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
Система календаря Мinguo.
MinguoDate
Дата в системе календаря Мinguo.
MinguoEra
Эра в системе календаря Мinguo.
ThaiBuddhistChronology
Система календаря тайского буддизма.
ThaiBuddhistDate
Дата в системе календаря тайского буддизма.
ThaiBuddhistEra
Эра в системе календаря тайского буддизма.

© 1993, 2023, 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/21/docs/api/java.base/java/time/chrono/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API