Класс 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<Era> |
eras() |
Получает список эпох для хронологии. |
String |
getCalendarType() |
Получает тип календаря исламского календаря. |
String |
getId() |
Получает идентификатор хронологии. |
boolean |
isLeapYear |
Проверяет, является ли указанный год високосным. |
ChronoLocalDateTime<HijrahDate> |
localDateTime |
Получает локальное время и дату в данной хронологии из другого временного объекта. |
int |
prolepticYear |
Вычисляет пролептический год, исходя из эпохи и года эпохи. |
ValueRange |
range |
Получает диапазон допустимых значений для указанного поля. |
HijrahDate |
resolveDate |
Разрешает проанализированные ChronoField значения в дату во время разбора. |
ChronoZonedDateTime<HijrahDate> |
zonedDateTime |
Получает ChronoZonedDateTime в данной хронологии из Instant. |
ChronoZonedDateTime<HijrahDate> |
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, 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 Locale Data Markup Language (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.
- Specified by:
-
zonedDateTimeв интерфейсеChronology - Parameters:
-
temporal- временной объект для преобразования, не null - Returns:
- зонированное время и дата в этой хронологии, не null
- See Also:
zonedDateTime
public ChronoZonedDateTime<HijrahDate> zonedDateTime(Instant instant, ZoneId zone)
ChronologyChronoZonedDateTime в этой хронологии из Instant. Это получает зонированное время и дату с тем же мгновением, что и указанное.
- Specified by:
-
zonedDateTimeв интерфейсеChronology - Parameters:
-
instant- мгновение для создания времени и даты, не null -
zone- часовой пояс, не null - Returns:
- зонированное время и дата, не null
isLeapYear
public boolean isLeapYear(long prolepticYear)
ChronologyВисокосный год — это год большей длины, чем обычный. Точный смысл определяется хронологией в соответствии со следующими ограничениями.
- високосный год должен подразумевать продолжительность года больше, чем у невисокосного.
- хронология, которая не поддерживает понятие года, должна возвращать false.
- должен возвращаться правильный результат для всех годов в допустимом диапазоне годов для хронологии.
За пределами диапазона допустимых годов реализация свободна возвращать либо лучшее предположение, либо false. Реализация не должна выбрасывать исключение, даже если год выходит за пределы допустимого диапазона.
- Specified by:
-
isLeapYearв интерфейсеChronology - Parameters:
-
prolepticYear- пролептический год для проверки, не проверен на диапазон - Returns:
- true, если год високосный
prolepticYear
public int prolepticYear(Era era, int yearOfEra)
ChronologyЭто объединяет эру и год эры в одно поле пролептического года.
Если хронология активно использует эры, такие как JapaneseChronology, то год эры будет проверен на соответствие эры. Для других хронологий проверка необязательна.
- Specified by:
-
prolepticYearв интерфейсеChronology - Parameters:
-
era- эра правильного типа для хронологии, не null -
yearOfEra- год хронологической эры - Returns:
- пролептический год
eraOf
public HijrahEra eraOf(int eraValue)
- Specified by:
-
eraOfв интерфейсеChronology - Parameters:
-
eraValue- значение эры - Returns:
- эра системы календаря, не null
- Throws:
-
DateTimeException- если невозможно создать эру
eras
public List<Era> eras()
ChronologyБольшинство систем календаря имеют эру, в рамках которой имеет значение год. Если система календаря не поддерживает концепцию эр, должен возвращаться пустой список.
- Specified by:
-
erasв интерфейсеChronology - Returns:
- список эр для хронологии, может быть неизменяемым, не null
range
public ValueRange range(ChronoField field)
Chronology Все поля могут быть выражены как целое число long. Этот метод возвращает объект, описывающий допустимый диапазон для этого значения.
Обратите внимание, что результат описывает только минимальное и максимальное допустимые значения, и не стоит слишком многого о них думать. Например, могут быть значения в диапазоне, которые недопустимы для поля.
Этот метод вернет результат, поддерживает ли хронология поле или нет.
- Specified by:
-
rangeв интерфейсеChronology - Parameters:
-
field- поле для получения диапазона, не null - Returns:
- диапазон допустимых значений для поля, не 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, 2021, 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/17/docs/api/java.base/java/time/chrono/HijrahChronology.html