Класс 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 |
Получает локальную дату в календарной системе хиджры из полей пролептического года, месяца года и дня месяца. |
HijrahDate |
date |
Получает локальную дату в календарной системе хиджры из полей эры, года эры, месяца года и дня месяца. |
HijrahDate |
date |
Получает локальную дату в этой хронологии из другого объекта временного типа. |
HijrahDate |
dateEpochDay |
Получает локальную дату в календарной системе хиджры из дня эпохи. |
HijrahDate |
dateNow() |
Получает текущую локальную дату в этой хронологии по системным часам в часовом поясе по умолчанию. |
HijrahDate |
dateNow |
Получает текущую локальную дату в этой хронологии по указанным часам. |
HijrahDate |
dateNow |
Получает текущую локальную дату в этой хронологии по системным часам в указанном часовом поясе. |
HijrahDate |
dateYearDay |
Получает локальную дату в календарной системе хиджры из полей пролептического года и дня года. |
HijrahDate |
dateYearDay |
Получает локальную дату в календарной системе хиджры из полей эры, года эры и дня года. |
HijrahEra |
eraOf |
Создаёт объект HijrahEra из числового значения. |
List |
eras() |
Получает список эр этой хронологии. |
String |
getCalendarType() |
Получает тип исламского календаря. |
String |
getId() |
Получает идентификатор хронологии. |
boolean |
isLeapYear |
Проверяет, является ли указанный год високосным. |
ChronoLocalDateTime |
localDateTime |
Получает локальную дату и время в этой хронологии из другого объекта временного типа. |
int |
prolepticYear |
Вычисляет пролептический год по эре и году эры. |
ValueRange |
range |
Получает диапазон допустимых значений для указанного поля. |
HijrahDate |
resolveDate |
Преобразует разобранные значения ChronoField в дату во время разбора. |
ChronoZonedDateTime |
zonedDateTime |
Получает ChronoZonedDateTime в этой хронологии из Instant. |
ChronoZonedDateTime |
zonedDateTime |
Получает ChronoZonedDateTime в этой хронологии из другого объекта временного типа. |
Методы, объявленные в классе AbstractChronology
compareTo, equals, hashCode, toString
Методы, объявленные в интерфейсе 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
public String getCalendarType()
Тип календаря — это идентификатор, определённый спецификацией языка разметки данных локали Unicode (LDML). Его можно использовать для поиска Chronology с помощью Chronology.of(String).
- Определён в:
-
getCalendarTypeв интерфейсеChronology - Возвращает:
- тип календарной системы; не null, если календарь имеет стандартный тип, иначе null
- См. также:
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
- См. также:
localDateTime
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Chronology Метод получает дату и время этой хронологии на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который этот фабричный метод преобразует в экземпляр ChronoLocalDateTime.
Преобразование извлекает и объединяет ChronoLocalDate и LocalTime из временного объекта. Реализациям разрешается выполнять оптимизацию, например обращаться к полям, эквивалентным соответствующим объектам. Результат использует эту хронологию.
Сигнатура этого метода соответствует функциональному интерфейсу TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод aChronology::localDateTime.
- Определён в:
-
localDateTimeв интерфейсеChronology - Параметры:
-
temporal— преобразуемый временной объект; не null - Возвращает:
- локальные дату и время этой хронологии; не null
- См. также:
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(TemporalAccessor temporal)
ChronologyChronoZonedDateTime этой хронологии из другого временного объекта. Метод получает дату и время с часовым поясом этой хронологии на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор сведений о дате и времени, который этот фабричный метод преобразует в экземпляр ChronoZonedDateTime.
Сначала преобразование попытается получить ZoneId из временного объекта, а при необходимости — ZoneOffset. Затем оно попытается получить Instant, а при необходимости — ChronoLocalDateTime. Результатом станет комбинация ZoneId или ZoneOffset с Instant или ChronoLocalDateTime. Реализациям разрешается выполнять оптимизацию, например обращаться к полям, эквивалентным соответствующим объектам. Результат использует эту хронологию.
Сигнатура этого метода соответствует функциональному интерфейсу TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод aChronology::zonedDateTime.
- Определён в:
-
zonedDateTimeв интерфейсеChronology - Параметры:
-
temporal— преобразуемый временной объект; не null - Возвращает:
- дату и время с часовым поясом в этой хронологии; не null
- См. также:
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
ChronologyChronoZonedDateTime этой хронологии из 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)
- Определён в:
-
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)
AbstractChronologyChronoField в дату в процессе разбора. Большинство реализаций 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, если данных недостаточно для её создания
© 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