Класс 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
int |
compareTo |
Сравнивает эту хронологию с другой хронологией. |
boolean |
equals |
Проверяет, равна ли эта хронология другой хронологии. |
int |
hashCode() |
Хеш-код этой хронологии. |
String |
toString() |
Представляет эту хронологию в виде String, используя идентификатор хронологии. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени. |
Методы, объявленные в интерфейсе Chronology
epochSecond, epochSecond, getDisplayName, isIsoBased, period | Модификатор и тип | Метод | Описание |
|---|---|---|
default long |
epochSecond |
Получает количество секунд с начала эпохи 1970-01-01T00:00:00Z. |
default long |
epochSecond |
Получает количество секунд с начала эпохи 1970-01-01T00:00:00Z. |
default String |
getDisplayName |
Получает текстовое представление этой хронологии. |
default boolean |
isIsoBased() |
Проверяет, основана ли эта хронология на ISO. |
default ChronoPeriod |
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 разрешаются с помощью метода разрешения поля. В отличие от них, класс 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.