Spec-Zone.ru › OpenJDK 25

Пакет java.time.chrono

package java.time.chrono

Универсальный API для календарных систем, отличных от стандартной системы ISO.

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

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

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

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

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

  • 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. Для краткого описания поведения при передаче null используется определение Javadoc "@param". Указание "@throws NullPointerException" явно не приводится для каждого метода.

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

Начиная с:
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
Календарная система Миньго.
MinguoDate
Дата в календарной системе Миньго.
MinguoEra
Эра в календарной системе Миньго.
ThaiBuddhistChronology
Тайская буддийская календарная система.
ThaiBuddhistDate
Дата в тайской буддийской календарной системе.
ThaiBuddhistEra
Эра в тайской буддийской календарной системе.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/chrono/package-summary.html

Spec-Zone.ru

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