Класс 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 |
Получение даты в системе календаря Хиджры по пролептическим году, месяцу и дню. |
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 в этой хронологии из другого временного объекта. |
Методы, объявленные в классе 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).
- Specified by:
-
getIdв интерфейсеChronology - Возвращает:
- идентификатор хронологии, не null
- См. также:
getCalendarType
public String getCalendarType()
Тип календаря — это идентификатор, определенный спецификацией Unicode Locale Data Markup Language (LDML). Он может быть использован для поиска Chronology с помощью Chronology.of(String).
- Specified by:
-
getCalendarTypeв интерфейсеChronology - Возвращает:
- тип системы календаря; не null, если календарь имеет стандартный тип, иначе null
- См. также:
date
public HijrahDate date(Era era, int yearOfEra, int month, int dayOfMonth)
- Specified by:
-
dateв интерфейсеChronology - Параметры:
-
era— эпоха хиджры, не null -
yearOfEra— год эпохи -
month— месяц -
dayOfMonth— день месяца - Возвращает:
- локальная дата хиджры, не null
- Исключение:
-
DateTimeException— если невозможно создать дату -
ClassCastException— еслиeraне являетсяHijrahEra
date
public HijrahDate date(int prolepticYear, int month, int dayOfMonth)
- Specified by:
-
dateв интерфейсеChronology - Параметры:
-
prolepticYear— пролептический год -
month— месяц -
dayOfMonth— день месяца - Возвращает:
- локальная дата хиджры, не null
- Исключение:
-
DateTimeException— если невозможно создать дату
dateYearDay
public HijrahDate dateYearDay(Era era, int yearOfEra, int dayOfYear)
- Specified by:
-
dateYearDayв интерфейсеChronology - Параметры:
-
era— эпоха хиджры, не null -
yearOfEra— год эпохи -
dayOfYear— день года - Возвращает:
- локальная дата хиджры, не null
- Исключение:
-
DateTimeException— если невозможно создать дату -
ClassCastException— еслиeraне являетсяHijrahEra
dateYearDay
public HijrahDate dateYearDay(int prolepticYear, int dayOfYear)
- Specified by:
-
dateYearDayв интерфейсеChronology - Параметры:
-
prolepticYear— пролептический год -
dayOfYear— день года - Возвращает:
- локальная дата хиджры, не null
- Исключение:
-
DateTimeException— если значение года вне диапазона или день года недействителен для этого года
dateEpochDay
public HijrahDate dateEpochDay(long epochDay)
- Specified by:
-
dateEpochDayв интерфейсеChronology - Параметры:
-
epochDay— день эпохи - Возвращает:
- локальная дата хиджры, не null
- Исключение:
-
DateTimeException— если невозможно создать дату
dateNow
public HijrahDate dateNow()
Chronology Это обращается к system clock в часовом поясе по умолчанию, чтобы получить текущую дату.
Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, так как часы жестко закодированы.
- Specified by:
-
dateNowв интерфейсеChronology - Возвращает:
- текущую локальную дату с использованием системных часов и часового пояса по умолчанию, не null
dateNow
public HijrahDate dateNow(ZoneId zone)
Chronology Это обращается к system clock для получения текущей даты. Указание часового пояса избегает зависимости от часового пояса по умолчанию.
Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, так как часы жестко закодированы.
- Specified by:
-
dateNowв интерфейсеChronology - Параметры:
-
zone— идентификатор часового пояса для использования, не null - Возвращает:
- текущую локальную дату с использованием системных часов, не null
dateNow
public HijrahDate dateNow(Clock clock)
Chronology Это обращается к указанным часам для получения текущей даты — сегодняшней. Использование этого метода позволяет использовать альтернативные часы для тестирования. Альтернативные часы могут быть введены с помощью dependency injection.
- Specified by:
-
dateNowв интерфейсеChronology - Параметры:
-
clock— используемые часы, не null - Возвращает:
- текущую локальную дату, не null
date
public HijrahDate date(TemporalAccessor temporal)
Chronology Это получает дату в этой хронологии на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор данных даты и времени, который этот фабричный метод преобразует в экземпляр ChronoLocalDate.
Преобразование обычно использует поле EPOCH_DAY, которое стандартизовано для всех систем календарей.
Этот метод соответствует подписи функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::date.
- Specified by:
-
dateв интерфейсеChronology - Параметры:
-
temporal— преобразуемый временной объект, не null - Возвращает:
- локальную дату в этой хронологии, не null
- См. также:
localDateTime
public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Chronology Получает время и дату в этой хронологии на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор данных даты и времени, который этот фабричный метод преобразует в экземпляр ChronoLocalDateTime.
Преобразование извлекает и объединяет ChronoLocalDate и LocalTime из временного объекта. Реализации разрешается выполнять оптимизации, такие как доступ к тем полям, которые эквивалентны соответствующим объектам. Результат использует эту хронологию.
Этот метод соответствует подписи функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::localDateTime.
- Specified by:
-
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, 2023, 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/21/docs/api/java.base/java/time/chrono/HijrahChronology.html