Spec-Zone.ru › OpenJDK 24

Класс 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(java.util.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-<тип календаря>.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 - числовой год с 4 цифрами, например "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 в этой хронологии из другого временного объекта.

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

compareTo, equals, hashCode, toString

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

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

Методы, объявленные в интерфейсе java.time.chrono.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 Locale Data Markup Language (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, если недостаточно информации для создания даты

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/chrono/HijrahChronology.html

Spec-Zone.ru

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