Spec-Zone.ru › OpenJDK 21

Класс 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).

Specified by:
getId в интерфейсе Chronology
Возвращает:
идентификатор хронологии, не null
См. также:
  • getCalendarType()

getCalendarType

public String getCalendarType()
Возвращает тип календаря исламского календаря.

Тип календаря — это идентификатор, определенный спецификацией Unicode Locale Data Markup Language (LDML). Он может быть использован для поиска Chronology с помощью Chronology.of(String).

Specified by:
getCalendarType в интерфейсе Chronology
Возвращает:
тип системы календаря; не null, если календарь имеет стандартный тип, иначе null
См. также:
  • getId()

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
См. также:
  • ChronoLocalDate.from(TemporalAccessor)

localDateTime

public ChronoLocalDateTime<HijrahDate> localDateTime(TemporalAccessor temporal)
Описание скопировано из интерфейса: Chronology
Получает локальное время и дату в этой хронологии из другого временного объекта.

Получает время и дату в этой хронологии на основе указанного временного объекта. TemporalAccessor представляет собой произвольный набор данных даты и времени, который этот фабричный метод преобразует в экземпляр ChronoLocalDateTime.

Преобразование извлекает и объединяет ChronoLocalDate и LocalTime из временного объекта. Реализации разрешается выполнять оптимизации, такие как доступ к тем полям, которые эквивалентны соответствующим объектам. Результат использует эту хронологию.

Этот метод соответствует подписи функционального интерфейса TemporalQuery, что позволяет использовать его в качестве запроса через ссылку на метод, aChronology::localDateTime.

Specified by:
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 из числового значения. Система календаря Хиджры имеет только одну эру, охватывающую пролептические годы больше нуля. Этот метод возвращает единственную эру Хиджры для значения 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
END_OF_DOCUMENT_MARKER

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, 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

Spec-Zone.ru

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