Spec-Zone.ru › OpenJDK 25

Интерфейс Chronology

Все суперинтерфейсы:
Comparable<Chronology>
Все известные классы-реализации:
AbstractChronology, HijrahChronology, IsoChronology, JapaneseChronology, MinguoChronology, ThaiBuddhistChronology
public interface Chronology extends Comparable<Chronology>
Календарная система, используемая для организации и определения дат.

Основной API для работы с датами и временем построен на календарной системе ISO. Хронология используется за кулисами для представления общего понятия календарной системы. Например, японской, минго, тайской буддийской и других.

Большинство других календарных систем также используют общие понятия года, месяца и дня, связанные с циклами движения Земли вокруг Солнца и Луны вокруг Земли. Эти общие понятия определены в ChronoField и доступны для использования в любой реализации Chronology:

  LocalDate isoDate = ...
  ThaiBuddhistDate thaiDate = ...
  int isoYear = isoDate.get(ChronoField.YEAR);
  int thaiYear = thaiDate.get(ChronoField.YEAR);
Как показано, несмотря на то что объекты даты относятся к разным календарным системам и представлены разными экземплярами Chronology, к обоим можно обратиться с помощью одной и той же константы из ChronoField. Полное обсуждение последствий этого см. в разделе ChronoLocalDate. В общем случае рекомендуется использовать известные LocalDate на основе ISO, а не ChronoLocalDate.

Хотя объект Chronology обычно использует ChronoField и основан на модели даты с эрой, годом эры, месяцем и днем, это не является обязательным. Экземпляр Chronology может представлять совершенно другой тип календарной системы, например календарь майя.

На практике экземпляр Chronology также выполняет роль фабрики. Метод of(String) позволяет получить экземпляр по идентификатору, а метод ofLocale(Locale) — по локали.

Экземпляр Chronology предоставляет набор методов для создания экземпляров ChronoLocalDate. Классы дат используются для работы с конкретными датами.

  • dateNow()
  • dateNow(clock)
  • dateNow(zone)
  • date(yearProleptic, month, day)
  • date(era, yearOfEra, month, day)
  • dateYearDay(yearProleptic, dayOfYear)
  • dateYearDay(era, yearOfEra, dayOfYear)
  • date(TemporalAccessor)

Добавление новых календарей

Приложения могут расширять набор доступных хронологий. Для добавления новой календарной системы необходимо реализовать Chronology, ChronoLocalDate и Era. Большая часть логики, специфичной для календарной системы, будет реализована в ChronoLocalDate. Реализация Chronology выполняет роль фабрики.

Для обнаружения дополнительных хронологий используется ServiceLoader. В каталог META-INF/services необходимо добавить файл с именем 'java.time.chrono.Chronology', содержащий список классов реализации. Дополнительные сведения о загрузке служб см. в документации ServiceLoader. При поиске по идентификатору или calendarType сначала находятся календарные системы, предоставляемые системой, а затем — предоставляемые приложением.

Каждая хронология должна иметь уникальный в пределах системы идентификатор. Если хронология представляет календарную систему, определённую спецификацией CLDR, тип календаря представляет собой конкатенацию типа CLDR и, если применимо, варианта CLDR.

Требования к реализации:
Этот интерфейс необходимо реализовывать с осторожностью, чтобы обеспечить корректную работу других классов. Все реализации, которые можно создать, должны быть final, неизменяемыми и потокобезопасными. По возможности подклассы должны быть сериализуемыми.
С версии:
1.8

Краткое описание методов

Модификатор и тип Метод Описание
int compareTo(Chronology other)
Сравнивает эту хронологию с другой хронологией.
ChronoLocalDate date(int prolepticYear, int month, int dayOfMonth)
Получает локальную дату в этой хронологии из полей пролептического года, месяца и дня.
default ChronoLocalDate date(Era era, int yearOfEra, int month, int dayOfMonth)
Получает локальную дату в этой хронологии из полей эры, года эры, месяца и дня.
ChronoLocalDate date(TemporalAccessor temporal)
Получает локальную дату в этой хронологии из другого объекта времени.
ChronoLocalDate dateEpochDay(long epochDay)
Получает локальную дату в этой хронологии из числа дней от эпохи.
default ChronoLocalDate dateNow()
Получает текущую локальную дату в этой хронологии по системным часам в часовом поясе по умолчанию.
default ChronoLocalDate dateNow(Clock clock)
Получает текущую локальную дату в этой хронологии по указанным часам.
default ChronoLocalDate dateNow(ZoneId zone)
Получает текущую локальную дату в этой хронологии по системным часам в указанном часовом поясе.
ChronoLocalDate dateYearDay(int prolepticYear, int dayOfYear)
Получает локальную дату в этой хронологии из полей пролептического года и дня года.
default ChronoLocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
Получает локальную дату в этой хронологии из полей эры, года эры и дня года.
default long epochSecond(int prolepticYear, int month, int dayOfMonth, int hour, int minute, int second, ZoneOffset zoneOffset)
Получает количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z.
default long epochSecond(Era era, int yearOfEra, int month, int dayOfMonth, int hour, int minute, int second, ZoneOffset zoneOffset)
Получает количество секунд, прошедших с начала эпохи 1970-01-01T00:00:00Z.
boolean equals(Object obj)
Проверяет, равна ли эта хронология другой хронологии.
Era eraOf(int eraValue)
Создаёт объект эры хронологии из числового значения.
List<Era> eras()
Получает список эр хронологии.
static Chronology from(TemporalAccessor temporal)
Получает экземпляр Chronology из объекта времени.
static Set<Chronology> getAvailableChronologies()
Возвращает доступные хронологии.
String getCalendarType()
Получает тип календаря календарной системы.
default String getDisplayName(TextStyle style, Locale locale)
Получает текстовое представление этой хронологии.
String getId()
Получает идентификатор хронологии.
int hashCode()
Хеш-код этой хронологии.
default boolean isIsoBased()
Проверяет, основана ли эта хронология на ISO.
boolean isLeapYear(long prolepticYear)
Проверяет, является ли указанный год високосным.
default ChronoLocalDateTime<? extends ChronoLocalDate> localDateTime(TemporalAccessor temporal)
Получает локальные дату и время в этой хронологии из другого объекта времени.
static Chronology of(String id)
Получает экземпляр Chronology по идентификатору хронологии или типу календарной системы.
static Chronology ofLocale(Locale locale)
Получает экземпляр Chronology по локали.
default ChronoPeriod period(int years, int months, int days)
Получает период для этой хронологии, заданный в годах, месяцах и днях.
int prolepticYear(Era era, int yearOfEra)
Вычисляет пролептический год по эре и году эры.
ValueRange range(ChronoField field)
Получает диапазон допустимых значений для указанного поля.
ChronoLocalDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle)
Преобразует разобранные значения ChronoField в дату во время разбора.
String toString()
Выводит эту хронологию как String.
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(Instant instant, ZoneId zone)
Получает ChronoZonedDateTime в этой хронологии из Instant.
default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(TemporalAccessor temporal)
Получает ChronoZonedDateTime в этой хронологии из другого объекта времени.

Подробное описание методов

from

static Chronology from(TemporalAccessor temporal)
Получает экземпляр Chronology из объекта времени.

Этот метод получает хронологию на основе указанного объекта времени. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр Chronology.

Преобразование получает хронологию с помощью TemporalQueries.chronology(). Если у указанного объекта времени нет хронологии, возвращается IsoChronology.

Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, Chronology::from.

Параметры:
temporal — объект времени для преобразования, не null
Возвращает:
хронологию, не null
Исключения:
DateTimeException — если преобразование в Chronology невозможно

ofLocale

static Chronology ofLocale(Locale locale)
Получает экземпляр Chronology из локали.

Этот метод возвращает Chronology на основе указанной локали; обычно возвращается IsoChronology. Другие календарные системы возвращаются только в том случае, если они явно выбраны в локали.

Класс Locale предоставляет доступ к различным сведениям, полезным для локализации приложения. К ним относятся язык и регион, например «en-GB» для английского языка, используемого в Великобритании.

Класс Locale также поддерживает механизм расширений, который можно использовать для указания календарной системы. Этот механизм представляет собой набор пар ключ-значение, где календарной системе соответствует ключ «ca». Например, локаль «en-JP-u-ca-japanese» обозначает английский язык, используемый в Японии, с японской календарной системой.

Этот метод находит нужную календарную систему способом, эквивалентным передаче «ca» в Locale.getUnicodeLocaleType(String). Если ключ «ca» отсутствует, возвращается IsoChronology.

Обратите внимание, что поведение этого метода отличается от поведения устаревшего метода Calendar.getInstance(Locale). Если этому методу передать локаль «th_TH», он вернет BuddhistCalendar. В отличие от него, этот метод вернет IsoChronology. Передача локали «th-TH-u-ca-buddhist» в любой из методов приведет к выбору тайской буддийской календарной системы, поэтому такой подход рекомендуется для дальнейшей локализации тайской календарной системы.

Похожая, но более простая ситуация возникает с японской календарной системой. Ранее для доступа к календарю использовалась локаль «jp_JP_JP». Однако, в отличие от тайской локали, «ja_JP_JP» автоматически преобразуется в Locale в современную и рекомендуемую форму «ja-JP-u-ca-japanese». Таким образом, этот метод и Calendar#getInstance(Locale) ведут себя одинаково.

Параметры:
locale — локаль для получения календарной системы, не null
Возвращает:
календарную систему, связанную с локалью, не null
Исключения:
DateTimeException — если календарь, указанный в локали, не найден

of

static Chronology of(String id)
Получает экземпляр Chronology по идентификатору хронологии или типу календарной системы.

Этот метод возвращает хронологию на основе идентификатора или типа. chronology ID однозначно определяет хронологию. calendar system type определен спецификацией CLDR.

Хронология может быть системной или предоставленной приложением с помощью конфигурации ServiceLoader.

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

Параметры:
id — идентификатор хронологии или тип календарной системы, не null
Возвращает:
хронологию с запрошенным идентификатором, не null
Исключения:
DateTimeException — если хронология не найдена

getAvailableChronologies

static Set<Chronology> getAvailableChronologies()
Возвращает доступные хронологии.

Каждая возвращенная Chronology доступна для использования в системе. Множество хронологий включает системные хронологии и любые хронологии, предоставленные приложением с помощью конфигурации ServiceLoader.

Возвращает:
независимое изменяемое множество идентификаторов доступных хронологий, не null

getId

String getId()
Получает идентификатор хронологии.

Идентификатор однозначно определяет Chronology. Его можно использовать для поиска Chronology с помощью of(String).

Возвращает:
идентификатор хронологии, не null
См. также:
  • getCalendarType()

getCalendarType

String getCalendarType()
Получает тип календарной системы.

Тип календаря — это идентификатор, определенный спецификациями CLDR и языка разметки данных локали Unicode (LDML) для однозначного определения календаря. getCalendarType представляет собой конкатенацию типа календаря CLDR и варианта, если он применим; вариант добавляется через дефис «-». Тип календаря используется для поиска Chronology с помощью of(String).

Возвращает:
тип календарной системы; null, если календарь не определен в CLDR/LDML
См. также:
  • getId()

date

default ChronoLocalDate date(Era era, int yearOfEra, int month, int dayOfMonth)
Получает локальную дату этой хронологии из полей эры, года эры, месяца года и дня месяца.
Требования к реализации:
Реализация по умолчанию объединяет эру и год эры в пролептический год, прежде чем вызвать date(int, int, int).
Параметры:
era — эра правильного для хронологии типа, не null
yearOfEra — год эры в этой хронологии
month — месяц года в этой хронологии
dayOfMonth — день месяца в этой хронологии
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату
ClassCastException — если era имеет тип, не соответствующий хронологии

date

ChronoLocalDate date(int prolepticYear, int month, int dayOfMonth)
Получает локальную дату этой хронологии из полей пролептического года, месяца года и дня месяца.
Параметры:
prolepticYear — пролептический год в этой хронологии
month — месяц года в этой хронологии
dayOfMonth — день месяца в этой хронологии
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату

dateYearDay

default ChronoLocalDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
Получает локальную дату этой хронологии из полей эры, года эры и дня года.
Требования к реализации:
Реализация по умолчанию объединяет эру и год эры в пролептический год, прежде чем вызвать dateYearDay(int, int).
Параметры:
era — эра правильного для хронологии типа, не null
yearOfEra — год эры в этой хронологии
dayOfYear — день года в этой хронологии
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату
ClassCastException — если era имеет тип, не соответствующий хронологии

dateYearDay

ChronoLocalDate dateYearDay(int prolepticYear, int dayOfYear)
Получает локальную дату этой хронологии из полей пролептического года и дня года.
Параметры:
prolepticYear — пролептический год в этой хронологии
dayOfYear — день года в этой хронологии
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату

dateEpochDay

ChronoLocalDate dateEpochDay(long epochDay)
Получает локальную дату этой хронологии из дня эпохи.

Определение EPOCH_DAY одинаково для всех календарных систем, поэтому это значение можно использовать для преобразования.

Параметры:
epochDay — день эпохи
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату

dateNow

default ChronoLocalDate dateNow()
Получает текущую локальную дату этой хронологии по системным часам в часовом поясе по умолчанию.

Для получения текущей даты этот метод обращается к system clock в часовом поясе по умолчанию.

Использование этого метода не позволяет применять альтернативные часы для тестирования, поскольку используемые часы заданы жестко.

Требования к реализации:
Реализация по умолчанию вызывает dateNow(Clock).
Возвращает:
текущую локальную дату по системным часам и в часовом поясе по умолчанию, не null
Исключения:
DateTimeException — если не удалось создать дату

dateNow

default ChronoLocalDate dateNow(ZoneId zone)
Получает текущую локальную дату этой хронологии по системным часам в указанном часовом поясе.

Для получения текущей даты этот метод обращается к system clock. Указание часового пояса позволяет избежать зависимости от часового пояса по умолчанию.

Использование этого метода не позволяет применять альтернативные часы для тестирования, поскольку используемые часы заданы жестко.

Требования к реализации:
Реализация по умолчанию вызывает dateNow(Clock).
Параметры:
zone — идентификатор часового пояса, не null
Возвращает:
текущую локальную дату по системным часам, не null
Исключения:
DateTimeException — если не удалось создать дату

dateNow

default ChronoLocalDate dateNow(Clock clock)
Получает текущую локальную дату этой хронологии по указанным часам.

Для получения текущей даты — сегодняшнего дня — этот метод обращается к указанным часам. Использование этого метода позволяет применять альтернативные часы для тестирования. Альтернативные часы можно задать с помощью dependency injection.

Требования к реализации:
Реализация по умолчанию вызывает date(TemporalAccessor).
Параметры:
clock — используемые часы, не null
Возвращает:
текущую локальную дату, не null
Исключения:
DateTimeException — если не удалось создать дату

date

ChronoLocalDate date(TemporalAccessor temporal)
Получает локальную дату этой хронологии из другого объекта времени.

Этот метод получает дату в этой хронологии на основе указанного объекта времени. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ChronoLocalDate.

Для преобразования обычно используется поле EPOCH_DAY, стандартизированное для всех календарных систем.

Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::date.

Параметры:
temporal — объект времени для преобразования, не null
Возвращает:
локальную дату в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату
См. также:
  • ChronoLocalDate.from(TemporalAccessor)

localDateTime

default ChronoLocalDateTime<? extends ChronoLocalDate> localDateTime(TemporalAccessor temporal)
Получает локальные дату и время этой хронологии из другого объекта времени.

Этот метод получает дату и время в этой хронологии на основе указанного объекта времени. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ChronoLocalDateTime.

Преобразование извлекает и объединяет ChronoLocalDate и LocalTime из объекта времени. Реализациям разрешается выполнять оптимизации, например обращаться к полям, эквивалентным соответствующим объектам. Результат использует эту хронологию.

Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::localDateTime.

Параметры:
temporal — объект времени для преобразования, не null
Возвращает:
локальные дату и время в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату и время
См. также:
  • ChronoLocalDateTime.from(TemporalAccessor)

zonedDateTime

default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(TemporalAccessor temporal)
Получает ChronoZonedDateTime этой хронологии из другого объекта времени.

Этот метод получает дату и время с часовым поясом в этой хронологии на основе указанного объекта времени. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр ChronoZonedDateTime.

Сначала преобразование получает ZoneId из объекта времени, а при необходимости — ZoneOffset. Затем оно пытается получить Instant, а при необходимости — ChronoLocalDateTime. Результатом будет либо сочетание ZoneId или ZoneOffset с Instant или ChronoLocalDateTime. Реализациям разрешается выполнять оптимизации, например обращаться к полям, эквивалентным соответствующим объектам. Результат использует эту хронологию.

Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::zonedDateTime.

Параметры:
temporal — объект времени для преобразования, не null
Возвращает:
дату и время с часовым поясом в этой хронологии, не null
Исключения:
DateTimeException — если не удалось создать дату и время
См. также:
  • ChronoZonedDateTime.from(TemporalAccessor)

zonedDateTime

default ChronoZonedDateTime<? extends ChronoLocalDate> zonedDateTime(Instant instant, ZoneId zone)
Получает ChronoZonedDateTime этой хронологии из Instant.

Этот метод получает дату и время с часовым поясом, соответствующие указанному моменту.

Параметры:
instant — момент, на основе которого создается дата и время, не null
zone — часовой пояс, не null
Возвращает:
дату и время с часовым поясом, не null
Исключения:
DateTimeException — если результат выходит за поддерживаемый диапазон

isLeapYear

boolean isLeapYear(long prolepticYear)
Проверяет, является ли указанный год високосным.

Високосный год длиннее обычного. Точное значение определяется хронологией с учетом следующих ограничений.

  • високосный год должен быть длиннее невисокосного.
  • хронология, не поддерживающая понятие года, должна возвращать false.
  • для всех лет в допустимом диапазоне хронологии должен возвращаться правильный результат.

За пределами допустимого диапазона лет реализация может вернуть наиболее вероятный результат или false. Реализация не должна выбрасывать исключение, даже если год находится за пределами допустимого диапазона.

Параметры:
prolepticYear — проверяемый пролептический год; допустимость значения не проверяется
Возвращает:
true, если год високосный

prolepticYear

int prolepticYear(Era era, int yearOfEra)
Вычисляет пролептический год по эре и году эры.

Этот метод объединяет эру и год эры в одно поле пролептического года.

Если в хронологии активно используются эры, например JapaneseChronology, год эры проверяется на соответствие эре. Для других хронологий проверка необязательна.

Параметры:
era — эра правильного для хронологии типа, не null
yearOfEra — год эры в этой хронологии
Возвращает:
пролептический год
Исключения:
DateTimeException — если преобразование в пролептический год невозможно, например если год недопустим для этой эры
ClassCastException — если era имеет тип, не соответствующий хронологии

eraOf

Era eraOf(int eraValue)
Создает объект эры хронологии из числового значения.

Эра, концептуально, является крупнейшим подразделением временной шкалы. В большинстве календарных систем есть одна эпоха, разделяющая временную шкалу на две эры. Однако в некоторых календарных системах эр несколько, например по одной на период правления каждого руководителя. Точное значение определяется хронологией с учетом следующих ограничений.

Эра, действовавшая на 1970-01-01, должна иметь значение 1. Последующие эры должны иметь последовательно возрастающие значения. Предшествующие эры должны иметь последовательно убывающие значения. Для представления значений эр каждая хронология должна использовать перечисление или аналогичный объект-одиночку.

Этот метод возвращает объект-одиночку эры правильного типа для указанного значения эры.

Параметры:
eraValue — значение эры
Возвращает:
эра календарной системы, не null
Исключения:
DateTimeException — если не удалось создать эру

eras

List<Era> eras()
Получает список эр хронологии.

В большинстве календарных систем есть эра, в пределах которой имеет значение год. Если календарная система не поддерживает понятие эр, необходимо вернуть пустой список.

Возвращает:
список эр хронологии; может быть неизменяемым, не null

range

ValueRange range(ChronoField field)
Получает диапазон допустимых значений указанного поля.

Все поля можно представить в виде целого числа типа long. Этот метод возвращает объект, описывающий допустимый диапазон для такого значения.

Обратите внимание, что результат описывает только минимальные и максимальные допустимые значения; не следует делать на их основании чрезмерных выводов. Например, некоторые значения внутри диапазона могут быть недопустимыми для этого поля.

Этот метод возвращает результат независимо от того, поддерживает ли хронология это поле.

Параметры:
field — поле, диапазон которого требуется получить, не null
Возвращает:
диапазон допустимых значений поля, не null
Исключения:
DateTimeException — если не удалось получить диапазон поля

getDisplayName

default String getDisplayName(TextStyle style, Locale locale)
Получает текстовое представление этой хронологии.

Этот метод возвращает текстовое название, используемое для идентификации хронологии и предназначенное для отображения пользователю. Параметры задают стиль возвращаемого текста и локаль.

Требования к реализации:
Реализация по умолчанию действует так, как если бы для форматирования текстового названия хронологии использовался форматтер.
Параметры:
style — требуемый стиль текста, не null
locale — используемая локаль, не null
Возвращает:
текстовое название хронологии, не null

resolveDate

ChronoLocalDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle)
Преобразует разобранные значения ChronoField в дату во время разбора.

Большинство реализаций TemporalField разрешаются с помощью метода resolve поля. В отличие от них, класс ChronoField определяет поля, смысл которых зависит от хронологии. Поэтому здесь разрешаются поля даты ChronoField в контексте конкретной хронологии.

Реализация по умолчанию, описывающая типичное поведение разрешения, предоставлена в AbstractChronology.

Параметры:
fieldValues — карта полей и значений, которую можно обновлять, не null
resolverStyle — запрошенный тип разрешения, не null
Возвращает:
разрешенную дату; null, если информации недостаточно для создания даты
Исключения:
DateTimeException — если дату не удалось разрешить, обычно из-за конфликта во входных данных

period

default ChronoPeriod period(int years, int months, int days)
Получает период этой хронологии на основе лет, месяцев и дней.

Этот метод возвращает период, связанный с этой хронологией и заданный указанным количеством лет, месяцев и дней. Во всех поставляемых хронологиях используются периоды, основанные на годах, месяцах и днях, однако API ChronoPeriod позволяет представлять период с помощью других единиц.

Требования к реализации:
Реализация по умолчанию возвращает класс реализации, подходящий для большинства календарных систем. Он основан только на трех единицах. Нормализация, сложение и вычитание определяют количество месяцев в году по range(ChronoField). Если количество месяцев в году фиксировано, подход к вычислению при сложении, вычитании и нормализации немного отличается.

При реализации необычной календарной системы, не основанной на годах, месяцах и днях, или если требуется полный контроль, необходимо напрямую реализовать интерфейс ChronoPeriod.

Возвращаемый период неизменяем и потокобезопасен.

Параметры:
years — количество лет; может быть отрицательным
months — количество лет; может быть отрицательным
days — количество лет; может быть отрицательным
Возвращает:
период в единицах этой хронологии, не null

epochSecond

default long epochSecond(int prolepticYear, int month, int dayOfMonth, int hour, int minute, int second, ZoneOffset zoneOffset)
Получает количество секунд от эпохи 1970-01-01T00:00:00Z.

Количество секунд вычисляется на основе пролептического года, месяца, дня месяца, часа, минуты, секунды и смещения часового пояса.

Параметры:
prolepticYear — пролептический год в этой хронологии
month — месяц года в этой хронологии
dayOfMonth — день месяца в этой хронологии
hour — час дня, от 0 до 23
minute — минута часа, от 0 до 59
second — секунда минуты, от 0 до 59
zoneOffset — смещение часового пояса, не null
Возвращает:
количество секунд относительно 1970-01-01T00:00:00Z; может быть отрицательным
Исключения:
DateTimeException — если какое-либо значение выходит за допустимый диапазон
С версии:
9

epochSecond

default long epochSecond(Era era, int yearOfEra, int month, int dayOfMonth, int hour, int minute, int second, ZoneOffset zoneOffset)
Получает количество секунд от эпохи 1970-01-01T00:00:00Z.

Количество секунд вычисляется на основе эры, года эры, месяца, дня месяца, часа, минуты, секунды и смещения часового пояса.

Параметры:
era — эра правильного для хронологии типа, не null
yearOfEra — год эры в этой хронологии
month — месяц года в этой хронологии
dayOfMonth — день месяца в этой хронологии
hour — час дня, от 0 до 23
minute — минута часа, от 0 до 59
second — секунда минуты, от 0 до 59
zoneOffset — смещение часового пояса, не null
Возвращает:
количество секунд относительно 1970-01-01T00:00:00Z; может быть отрицательным
Исключения:
DateTimeException — если какое-либо значение выходит за допустимый диапазон
С версии:
9

isIsoBased

default boolean isIsoBased()
Проверяет, основана ли эта система летоисчисления на ISO.

Система летоисчисления, основанная на ISO, имеет ту же базовую структуру, что и ISO chronology, то есть в ней такое же количество месяцев, такое же количество дней в каждом месяце, а день года и високосные годы совпадают с ISO-системой летоисчисления. Она также поддерживает понятие года в недельном формате ISO-системы летоисчисления. Например, системы летоисчисления Minguo, ThaiThaiBuddhist и Japanese основаны на ISO.

Требования к реализации:
Реализация по умолчанию возвращает false.
Возвращает:
true, только если эта система летоисчисления поддерживает все поля из IsoFields. В противном случае возвращает false.
См. также:
  • IsoChronology
  • JapaneseChronology
  • MinguoChronology
  • ThaiBuddhistChronology
  • IsoFields

compareTo

int compareTo(Chronology other)
Сравнивает эту систему летоисчисления с другой.

Порядок сравнения определяется сначала строкой идентификатора системы летоисчисления, а затем любой дополнительной информацией, специфичной для подкласса. Результат «согласован с equals» в соответствии с определением Comparable.

Определено в:
compareTo в интерфейсе Comparable<Chronology>
Параметры:
other - другая система летоисчисления для сравнения, не null
Возвращает:
значение сравнения: результат сравнения строки идентификатора этой системы летоисчисления со строкой идентификатора системы летоисчисления other, если строки идентификаторов не равны; если же строки идентификаторов равны, учитывается дополнительная информация, с помощью которой система летоисчисления различает экземпляры

equals

boolean equals(Object obj)
Проверяет, равна ли эта система летоисчисления другой.

Сравнение выполняется на основе полного состояния объекта.

Переопределяет:
equals в классе Object
Параметры:
obj - объект для проверки; для null возвращает false
Возвращает:
true, если эта система летоисчисления равна другой
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Хэш-код этой системы летоисчисления.

Хэш-код должен основываться на полном состоянии объекта.

Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хэш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

String toString()
Представляет эту систему летоисчисления в виде String.

Формат должен включать полное состояние объекта.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой системы летоисчисления, не null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/Chronology.html

Spec-Zone.ru

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