Класс 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 и длительность каждого месяца для диапазона лет. Варианты идентифицируются в файлеcalendars.properties. Новые свойства имеют префикс"calendars.hijrah.":Имя свойства Значение свойства Описание calendars.hijrah.{ID} Ресурс свойств, определяющий вариант {ID}Ресурс свойств расположен в файле calendars.propertiescalendars.hijrah.{ID}.type Тип календаря LDML определяет имена типов календарей Ресурс свойств Хиджры — это набор свойств, описывающих календарь. Синтаксис определяется
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 включительно. - С тех пор как:
- 1.8
- См. также:
- Сериализованная форма
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static HijrahChronology |
INSTANCE Единственный экземпляр исламского календаря Ум аль-Кура Саудовской Аравии. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
HijrahDate |
date(Era era,
int yearOfEra,
int month,
int dayOfMonth) Получение даты в системе календаря Хиджры по эпохе, году эпохи, месяцу и дню месяца. |
HijrahDate |
date(int prolepticYear,
int month,
int dayOfMonth) Получение даты в системе календаря Хиджры по пролептическому году, месяцу и дню месяца. |
HijrahDate |
date(TemporalAccessor temporal) Получение даты в этой хронологии из другого временного объекта. |
HijrahDate |
dateEpochDay(long epochDay) Получение даты в системе календаря Хиджры по эпохе дня. |
HijrahDate |
dateNow() Получение текущей локальной даты в этой хронологии из системных часов в часовом поясе по умолчанию. |
HijrahDate |
dateNow(Clock clock) Получение текущей локальной даты в этой хронологии из указанных часов. |
HijrahDate |
dateNow(ZoneId zone) Получение текущей локальной даты в этой хронологии из системных часов в указанном часовом поясе. |
HijrahDate |
dateYearDay(Era era,
int yearOfEra,
int dayOfYear) Получение даты в системе календаря Хиджры по эпохе, году эпохи и дню года. |
HijrahDate |
dateYearDay(int prolepticYear,
int dayOfYear) Получение даты в системе календаря Хиджры по пролептическому году и дню года. |
HijrahEra |
eraOf(int eraValue) Создание объекта эпохи хронологии из числового значения. |
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) Разрешение проанализированных |
ChronoZonedDateTime<HijrahDate> |
zonedDateTime(Instant instant,
ZoneId zone) Получение |
ChronoZonedDateTime<HijrahDate> |
zonedDateTime(TemporalAccessor temporal) Получение |
Методы, унаследованные от класса java.time.chrono.AbstractChronology
compareTo, equals, hashCode, toString Методы, унаследованные от класса java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Методы, унаследованные от интерфейса java.time.chrono.Chronology
from, getDisplayName, period Поля
INSTANCE
public static final HijrahChronology INSTANCE
Единственный экземпляр исламского календаря Умм аль-Кура Саудовской Аравии. Другие варианты хронологии Хиджры могут быть доступны из Chronology.getAvailableChronologies().
Методы
getId
public String getId()
Возвращает ID хронологии.
ID однозначно идентифицирует Chronology. Его можно использовать для поиска Chronology с помощью Chronology.of(String).
- Указано в:
-
getIdв интерфейсеChronology - Возвращает:
- ID хронологии, не 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.
- Указано в:
-
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)
Описание скопировано из интерфейса: Chronology
Создает объект эры хронологии из числового значения.
Эра, по сути, является крупнейшим разделением временной шкалы. Большинство систем календарей имеют одну эпоху, разделяющую временную шкалу на две эры. Однако некоторые имеют несколько эр, например, по одной для правления каждого лидера. Точное значение определяется хронологией в соответствии со следующими ограничениями.
Эра, используемая в 1970-01-01, должна иметь значение 1. Позднейшие эры должны иметь последовательно большие значения. Более ранние эры должны иметь последовательно меньшие значения. Каждая хронология должна ссылаться на перечисление или аналогичный одиночный объект для предоставления значений эры.
Этот метод возвращает одиночную эру правильного типа для указанного значения эры.
- Указано в:
-
eraOfв интерфейсеChronology - Параметры:
-
eraValue- значение эры - Возвращает:
- эра системы календаря, не null
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, 2020, 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.