Spec-Zone.ru › OpenJDK 25

Класс HijrahChronology

java.lang.Object
java.time.chrono.AbstractChronology
java.time.chrono.HijrahChronology
Все реализуемые интерфейсы:
Serializable, Comparable<Chronology>, Chronology
public final class HijrahChronology extends AbstractChronology implements Serializable
Календарь хиджры — лунный календарь, поддерживающий исламские календари.

HijrahChronology следует правилам календарной системы хиджры. Существует несколько вариантов календаря хиджры, основанных на различиях в определении момента появления новолуния и места наблюдения. В некоторых вариантах продолжительность каждого месяца вычисляется алгоритмически на основе астрономических данных о Луне и Земле, а в других она определяется на основании официально подтверждённого наблюдения новолуния. Алгоритмически вычисляемые календари могут проецироваться в будущее. Для календарей, основанных на наблюдениях, доступны только исторические данные о прошлых наблюдениях.

Продолжительность каждого месяца составляет 29 или 30 дней. Обычный год длится 354 дня, високосный — 355 дней.

CLDR и LDML определяют следующие варианты:

Варианты календарей хиджры
Идентификатор хронологии Тип календаря Расширение локали, см. Locale Описание
Hijrah-umalqura islamic-umalqura ca-islamic-umalqura Исламский календарь Умм-аль-Кура Саудовской Аравии

Дополнительные варианты могут быть доступны через Chronology.getAvailableChronologies().

Пример

Для выбора хронологии из локали используется Chronology.ofLocale(Locale), который находит хронологию на основе механизма расширений BCP 47, поддерживаемого локалью, чтобы запросить определённый календарь ("ca"). Например:

     Locale locale = Locale.forLanguageTag("en-US-u-ca-islamic-umalqura");
     Chronology chrono = Chronology.ofLocale(locale);
Требования к реализации:
Этот класс является неизменяемым и потокобезопасным.
Примечание по реализации:
Каждый вариант календаря хиджры настраивается отдельно. Каждый вариант определяется файлом свойств, в котором задаются ID, calendar type, начало календаря, соответствие календарю ISO и продолжительность каждого месяца в диапазоне лет. Варианты загружаются HijrahChronology как ресурс из hijrah-config-<calendar type>.properties.

Файл свойств календаря хиджры представляет собой набор свойств, описывающих календарь. Синтаксис определяется java.util.Properties#load(Reader).

Настройка календаря хиджры
Имя свойства Значение свойства Описание
id Идентификатор хронологии, например "Hijrah-umalqura" Общепринятый идентификатор календаря
type Тип календаря, например "islamic-umalqura" Типы календарей определяются LDML
version Версия, например: "1.8.0_1" Версия данных варианта календаря хиджры
iso-start Начальная дата ISO в формате yyyy-MM-dd, например: "1900-04-30" Дата ISO первого дня минимального года хиджры.
yyyy — четырёхзначный числовой год, например "1434" Значение представляет собой последовательность из 12 длительностей месяцев, например: "29 30 29 30 29 30 30 30 29 30 29 29" Продолжительность 12 месяцев года, разделённая пробелами. Свойство с числовым годом должно быть указано для каждого года без пропусков. Продолжительность месяцев должна составлять от 29 до 32 дней включительно.

Дополнительные варианты можно добавить, поместив файлы свойств конфигурации в каталог <JAVA_HOME>/conf/chronology. Файлы свойств должны соответствовать соглашению об именовании hijrah-config-<chronology id>_<calendar type>.properties.

Начиная с версии:
1.8
См. также:
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final HijrahChronology INSTANCE
Экземпляр-одиночка исламского календаря Умм-аль-Кура Саудовской Аравии.

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

Модификатор и тип Метод Описание
HijrahDate date(int prolepticYear, int month, int dayOfMonth)
Получает локальную дату в календарной системе хиджры из полей пролептического года, месяца года и дня месяца.
HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
Получает локальную дату в календарной системе хиджры из полей эры, года эры, месяца года и дня месяца.
HijrahDate date(TemporalAccessor temporal)
Получает локальную дату в этой хронологии из другого объекта временного типа.
HijrahDate dateEpochDay(long epochDay)
Получает локальную дату в календарной системе хиджры из дня эпохи.
HijrahDate dateNow()
Получает текущую локальную дату в этой хронологии по системным часам в часовом поясе по умолчанию.
HijrahDate dateNow(Clock clock)
Получает текущую локальную дату в этой хронологии по указанным часам.
HijrahDate dateNow(ZoneId zone)
Получает текущую локальную дату в этой хронологии по системным часам в указанном часовом поясе.
HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
Получает локальную дату в календарной системе хиджры из полей пролептического года и дня года.
HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
Получает локальную дату в календарной системе хиджры из полей эры, года эры и дня года.
HijrahEra eraOf(int eraValue)
Создаёт объект HijrahEra из числового значения.
List<Era> eras()
Получает список эр этой хронологии.
String getCalendarType()
Получает тип исламского календаря.
String getId()
Получает идентификатор хронологии.
boolean isLeapYear(long prolepticYear)
Проверяет, является ли указанный год високосным.
ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Получает локальную дату и время в этой хронологии из другого объекта временного типа.
int prolepticYear(Era era, int yearOfEra)
Вычисляет пролептический год по эре и году эры.
ValueRange range(ChronoField field)
Получает диапазон допустимых значений для указанного поля.
HijrahDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle)
Преобразует разобранные значения ChronoField в дату во время разбора.
ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
Получает ChronoZonedDateTime в этой хронологии из Instant.
ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
Получает ChronoZonedDateTime в этой хронологии из другого объекта временного типа.

Методы, объявленные в классе AbstractChronology

compareTo, equals, hashCode, toString

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе Chronology

epochSecond, epochSecond, getDisplayName, isIsoBased, period

Подробное описание полей

INSTANCE

public static final HijrahChronology INSTANCE
Единственный экземпляр исламского календаря Умм аль-Кура Саудовской Аравии. Другие варианты хиджры могут быть доступны через Chronology.getAvailableChronologies().

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

getId

public String getId()
Возвращает идентификатор хронологии.

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

Определён в:
getId в интерфейсе Chronology
Возвращает:
идентификатор хронологии; не null
См. также:
  • getCalendarType()

getCalendarType

public String getCalendarType()
Возвращает тип исламского календаря.

Тип календаря — это идентификатор, определённый спецификацией языка разметки данных локали Unicode (LDML). Его можно использовать для поиска Chronology с помощью Chronology.of(String).

Определён в:
getCalendarType в интерфейсе Chronology
Возвращает:
тип календарной системы; не null, если календарь имеет стандартный тип, иначе null
См. также:
  • getId()

date

public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
Создаёт локальную дату в календарной системе хиджры на основе полей эры, года эры, месяца года и дня месяца.
Определён в:
date в интерфейсе Chronology
Параметры:
era — эра хиджры; не null
yearOfEra — год эры
month — месяц года
dayOfMonth — день месяца
Возвращает:
локальную дату хиджры; не null
Исключения:
DateTimeException — если не удалось создать дату
ClassCastException — если era не является HijrahEra

date

public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
Создаёт локальную дату в календарной системе хиджры на основе полей пролептического года, месяца года и дня месяца.
Определён в:
date в интерфейсе Chronology
Параметры:
prolepticYear — пролептический год
month — месяц года
dayOfMonth — день месяца
Возвращает:
локальную дату хиджры; не null
Исключения:
DateTimeException — если не удалось создать дату

dateYearDay

public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
Создаёт локальную дату в календарной системе хиджры на основе полей эры, года эры и дня года.
Определён в:
dateYearDay в интерфейсе Chronology
Параметры:
era — эра хиджры; не null
yearOfEra — год эры
dayOfYear — день года
Возвращает:
локальную дату хиджры; не null
Исключения:
DateTimeException — если не удалось создать дату
ClassCastException — если era не является HijrahEra

dateYearDay

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

dateEpochDay

public HijrahDate dateEpochDay(long epochDay)
Создаёт локальную дату в календарной системе хиджры на основе дня эпохи.
Определён в:
dateEpochDay в интерфейсе Chronology
Параметры:
epochDay — день эпохи
Возвращает:
локальную дату хиджры; не null
Исключения:
DateTimeException — если не удалось создать дату

dateNow

public HijrahDate dateNow()
Описание скопировано из интерфейса: Chronology
Возвращает текущую локальную дату в этой хронологии, используя системные часы в часовом поясе по умолчанию.

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

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

Определён в:
dateNow в интерфейсе Chronology
Возвращает:
текущую локальную дату, полученную с помощью системных часов и часового пояса по умолчанию; не null

dateNow

public HijrahDate dateNow(ZoneId zone)
Описание скопировано из интерфейса: Chronology
Возвращает текущую локальную дату в этой хронологии, используя системные часы в указанном часовом поясе.

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

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

Определён в:
dateNow в интерфейсе Chronology
Параметры:
zone — идентификатор часового пояса; не null
Возвращает:
текущую локальную дату, полученную с помощью системных часов; не null

dateNow

public HijrahDate dateNow(Clock clock)
Описание скопировано из интерфейса: Chronology
Возвращает текущую локальную дату в этой хронологии, используя указанные часы.

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

Определён в:
dateNow в интерфейсе Chronology
Параметры:
clock — используемые часы; не null
Возвращает:
текущую локальную дату; не null

date

public HijrahDate date(TemporalAccessor temporal)
Описание скопировано из интерфейса: Chronology
Получает локальную дату этой хронологии из другого временного объекта.

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

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

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

Определён в:
date в интерфейсе Chronology
Параметры:
temporal — преобразуемый временной объект; не null
Возвращает:
локальную дату этой хронологии; не null
См. также:
  • ChronoLocalDate.from(TemporalAccessor)

localDateTime

public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Описание скопировано из интерфейса: Chronology
Получает локальные дату и время этой хронологии из другого временного объекта.

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

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

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

Определён в:
localDateTime в интерфейсе Chronology
Параметры:
temporal — преобразуемый временной объект; не null
Возвращает:
локальные дату и время этой хронологии; не null
См. также:
  • ChronoLocalDateTime.from(TemporalAccessor)

zonedDateTime

public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
Описание скопировано из интерфейса: Chronology
Получает ChronoZonedDateTime этой хронологии из другого временного объекта.

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

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

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

Определён в:
zonedDateTime в интерфейсе Chronology
Параметры:
temporal — преобразуемый временной объект; не null
Возвращает:
дату и время с часовым поясом в этой хронологии; не null
См. также:
  • ChronoZonedDateTime.from(TemporalAccessor)

zonedDateTime

public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
Описание скопировано из интерфейса: Chronology
Получает ChronoZonedDateTime этой хронологии из Instant.

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

Определён в:
zonedDateTime в интерфейсе Chronology
Параметры:
instant — момент времени, на основе которого создаются дата и время; не null
zone — часовой пояс; не null
Возвращает:
дату и время с часовым поясом; не null

isLeapYear

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

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

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

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

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

prolepticYear

public int prolepticYear(Era era, int yearOfEra)
Описание скопировано из интерфейса: Chronology
Вычисляет пролептический год на основе эры и года эры.

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

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

Определён в:
prolepticYear в интерфейсе Chronology
Параметры:
era — эра правильного для этой хронологии типа; не null
yearOfEra — год эры в этой хронологии
Возвращает:
пролептический год

eraOf

public HijrahEra eraOf(int eraValue)
Создаёт объект HijrahEra на основе числового значения. В календарной системе хиджры есть только одна эра, охватывающая пролептические годы больше нуля. Этот метод возвращает единственный экземпляр HijrahEra для значения 1.
Определён в:
eraOf в интерфейсе Chronology
Параметры:
eraValue — значение эры
Возвращает:
эру календарной системы; не null
Исключения:
DateTimeException — если не удалось создать эру

eras

public List<Era> eras()
Описание скопировано из интерфейса: Chronology
Возвращает список эр этой хронологии.

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

Определён в:
eras в интерфейсе Chronology
Возвращает:
список эр этой хронологии; может быть неизменяемым; не null

range

public ValueRange range(ChronoField field)
Описание скопировано из интерфейса: Chronology
Возвращает диапазон допустимых значений указанного поля.

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

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

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

Определён в:
range в интерфейсе Chronology
Параметры:
field — поле, для которого требуется получить диапазон; не null
Возвращает:
диапазон допустимых значений поля; не null

resolveDate

public HijrahDate resolveDate(Map<TemporalField, Long> fieldValues, ResolverStyle resolverStyle)
Описание скопировано из класса: AbstractChronology
Преобразует разобранные значения ChronoField в дату в процессе разбора.

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

Объекты ChronoField разрешаются этим методом, который может быть переопределён в подклассах.

  • EPOCH_DAY — если присутствует, это значение преобразуется в дату, после чего все остальные поля даты сверяются с ней.
  • PROLEPTIC_MONTH — если присутствует, значение разделяется на YEAR и MONTH_OF_YEAR. В строгом и интеллектуальном режимах поле проверяется.
  • YEAR_OF_ERA и ERA — если присутствуют оба поля, они объединяются в YEAR. В нестрогом режиме диапазон YEAR_OF_ERA не проверяется, а в интеллектуальном и строгом режимах проверяется. Диапазон ERA проверяется во всех трёх режимах. Если присутствует только YEAR_OF_ERA, а режим — интеллектуальный или нестрогий, предполагается последняя доступная эра. В строгом режиме эра не предполагается, а YEAR_OF_ERA остаётся без изменений. Если присутствует только ERA, оно остаётся без изменений.
  • YEAR, MONTH_OF_YEAR и DAY_OF_MONTH — если присутствуют все три поля, они объединяются в дату. Во всех трёх режимах проверяется YEAR. В интеллектуальном и строгом режимах проверяются месяц и день. В нестрогом режиме дата формируется так, как если бы сначала создавалась дата первого дня первого месяца запрошенного года, затем добавлялась разница в месяцах, а затем — разница в днях. В интеллектуальном режиме, если день месяца превышает максимальное значение для указанного месяца года, он корректируется до последнего дня месяца. В строгом режиме три поля должны образовывать допустимую дату.
  • YEAR и DAY_OF_YEAR — если присутствуют оба поля, они объединяются в дату. Во всех трёх режимах проверяется YEAR. В нестрогом режиме дата формируется так, как если бы сначала создавалась дата первого дня запрошенного года, а затем добавлялась разница в днях. В интеллектуальном и строгом режимах эти два поля должны образовывать допустимую дату.
  • YEAR, MONTH_OF_YEAR, ALIGNED_WEEK_OF_MONTH и ALIGNED_DAY_OF_WEEK_IN_MONTH — если присутствуют все четыре поля, они объединяются в дату. Во всех трёх режимах проверяется YEAR. В нестрогом режиме дата формируется так, как если бы сначала создавалась дата первого дня первого месяца запрошенного года, затем добавлялась разница в месяцах, затем — в неделях, а затем — в днях. В интеллектуальном и строгом режимах все четыре поля проверяются на соответствие своим внешним диапазонам. Затем дата формируется так, как если бы сначала создавалась дата первого дня запрошенных года и месяца, а затем к ней прибавлялось количество недель и дней, необходимое для получения заданных значений. В строгом режиме дополнительно проверяется, не привели ли корректировки дня и недели к изменению месяца.
  • YEAR, MONTH_OF_YEAR, ALIGNED_WEEK_OF_MONTH и DAY_OF_WEEK — если присутствуют все четыре поля, они объединяются в дату. Этот подход совпадает с описанным выше для годов, месяцев и недель в ALIGNED_DAY_OF_WEEK_IN_MONTH. После обработки годов, месяцев и недель день недели корректируется до следующего совпадающего дня недели или остаётся без изменений, если он уже совпадает.
  • YEAR, ALIGNED_WEEK_OF_YEAR и ALIGNED_DAY_OF_WEEK_IN_YEAR — если присутствуют все три поля, они объединяются в дату. Во всех трёх режимах проверяется YEAR. В нестрогом режиме дата формируется так, как если бы сначала создавалась дата первого дня запрошенного года, затем добавлялась разница в неделях, а затем — в днях. В интеллектуальном и строгом режимах все три поля проверяются на соответствие своим внешним диапазонам. Затем дата формируется так, как если бы сначала создавалась дата первого дня запрошенного года, а затем к ней прибавлялось количество недель и дней, необходимое для получения заданных значений. В строгом режиме дополнительно проверяется, не привели ли корректировки дня и недели к изменению года.
  • YEAR, ALIGNED_WEEK_OF_YEAR и DAY_OF_WEEK — если присутствуют все три поля, они объединяются в дату. Этот подход совпадает с описанным выше для годов и недель в ALIGNED_DAY_OF_WEEK_IN_YEAR. После обработки годов и недель день недели корректируется до следующего совпадающего дня недели или остаётся без изменений, если он уже совпадает.

Реализация по умолчанию подходит для большинства календарных систем. Если обнаружено поле ChronoField.YEAR_OF_ERA, но поле ChronoField.ERA отсутствует, используется последняя эра из Chronology.eras(). Реализация предполагает, что неделя состоит из 7 дней, первый день месяца имеет значение 1, первый день года имеет значение 1, а первый день месяца и года всегда существует.

Определён в:
resolveDate в интерфейсе Chronology
Переопределён в:
resolveDate в классе AbstractChronology
Параметры:
fieldValues — карта полей и значений, которую можно обновлять; не null
resolverStyle — запрошенный режим разрешения; не null
Возвращает:
разрешённую дату или 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/HijrahChronology.html

Spec-Zone.ru

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