Spec-Zone.ru › OpenJDK 17

Класс MonthDay

java.lang.Object
java.time.MonthDay
Все реализованные интерфейсы:
Serializable, Comparable<MonthDay>, TemporalAccessor, TemporalAdjuster
public final class MonthDay extends Object implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable
Месяц и день в системе календаря ISO-8601, например --12-03.

MonthDay это неизменяемый объект даты и времени, представляющий собой сочетание месяца и числа месяца. Можно получить любые поля, которые можно вывести из месяца и дня, например, квартал года.

В этом классе не хранится и не представляется год, время или часовой пояс. Например, значение "3 декабря" может быть сохранено в MonthDay.

Поскольку в MonthDay нет года, високосный день 29 февраля считается допустимым.

Этот класс реализует TemporalAccessor вместо Temporal. Это связано с тем, что нельзя определить, является ли 29 февраля допустимым или нет без внешней информации, что препятствует реализации операций сложения/вычитания. В связи с этим, MonthDay предоставляет только доступ для запроса и установки полей MONTH_OF_YEAR и DAY_OF_MONTH.

Система календаря ISO-8601 — это современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором сегодняшние правила високосных лет применяются для всех времен. Для большинства приложений, написанных сегодня, правила ISO-8601 полностью подходят. Однако любое приложение, использующее исторические даты и требующее их точности, обнаружит, что подход ISO-8601 не подходит.

Это значение-базируемый класс; программисты должны рассматривать экземпляры, которые являются равными, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, в противном случае может произойти непредсказуемое поведение. Например, в будущих релизах синхронизация может потерпеть неудачу. Для сравнений следует использовать метод equals.

Требования к реализации:
Этот класс неизменяемый и потокобезопасный.
С:
1.8
См. также:
  • Сериализованная форма

Краткое описание методов

Модификатор и тип Метод Описание
Temporal adjustInto(Temporal temporal)
Настраивает указанный временной объект таким образом, чтобы у него был этот месяц и день.
LocalDate atYear(int year)
Объединяет этот месяц и день с годом, чтобы создать LocalDate.
int compareTo(MonthDay other)
Сравнивает этот месяц и день с другим месяцем и днем.
boolean equals(Object obj)
Проверяет, равен ли этот месяц и день другому месяцу и дню.
String format(DateTimeFormatter formatter)
Форматирует этот месяц и день с использованием указанного форматера.
static MonthDay from(TemporalAccessor temporal)
Получает экземпляр MonthDay из временного объекта.
int get(TemporalField field)
Получает значение указанного поля из этого месяца и дня в виде int.
int getDayOfMonth()
Получает поле день месяца.
long getLong(TemporalField field)
Получает значение указанного поля из этого месяца и дня в виде long.
Month getMonth()
Получает поле месяц года, используя перечисление Month.
int getMonthValue()
Получает поле месяц года от 1 до 12.
int hashCode()
Хэш-код для этого месяца и дня.
boolean isAfter(MonthDay other)
Проверяет, следует ли этот месяц и день после указанного месяца и дня.
boolean isBefore(MonthDay other)
Проверяет, предшествует ли этот месяц и день указанному месяцу и дню.
boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.
boolean isValidYear(int year)
Проверяет, является ли год допустимым для этого месяца и дня.
static MonthDay now()
Получает текущий месяц и день с системных часов в часовом поясе по умолчанию.
static MonthDay now(Clock clock)
Получает текущий месяц и день с указанных часов.
static MonthDay now(ZoneId zone)
Получает текущий месяц и день с системных часов в указанном часовом поясе.
static MonthDay of(int month, int dayOfMonth)
Получает экземпляр MonthDay.
static MonthDay of(Month month, int dayOfMonth)
Получает экземпляр MonthDay.
static MonthDay parse(CharSequence text)
Получает экземпляр MonthDay из текстовой строки, например --12-03.
static MonthDay parse(CharSequence text, DateTimeFormatter formatter)
Получает экземпляр MonthDay из текстовой строки с использованием определенного форматера.
<R> R query(TemporalQuery<R> query)
Запрашивает этот месяц и день с помощью указанного запроса.
ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.
String toString()
Выводит этот месяц и день как String, например --12-03.
MonthDay with(Month month)
Возвращает копию этого MonthDay с изменённым месяцем года.
MonthDay withDayOfMonth(int dayOfMonth)
Возвращает копию этого MonthDay с изменённым днём месяца.
MonthDay withMonth(int month)
Возвращает копию этого MonthDay с изменённым месяцем года.

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

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

Подробное описание методов

now

public static MonthDay now()
Получает текущее число месяца с системных часов в часовом поясе по умолчанию.

Это запросит system clock в часовом поясе по умолчанию для получения текущего числа месяца.

Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, так как часы жестко запрограммированы.

Возвращает:
текущее число месяца, используя системные часы и часовой пояс по умолчанию, не null

now

public static MonthDay now(ZoneId zone)
Получает текущее число месяца с системных часов в указанном часовом поясе.

Это запросит system clock для получения текущего числа месяца. Указание часового пояса исключает зависимость от часового пояса по умолчанию.

Использование этого метода предотвратит возможность использования альтернативных часов для тестирования, так как часы жестко запрограммированы.

Параметры:
zone - идентификатор часового пояса для использования, не null
Возвращает:
текущее число месяца, используя системные часы, не null

now

public static MonthDay now(Clock clock)
Получает текущее число месяца с указанных часов.

Это запросит указанные часы для получения текущего числа месяца. Использование этого метода позволяет использовать альтернативные часы для тестирования. Альтернативные часы могут быть введены с помощью dependency injection.

Параметры:
clock - часы для использования, не null
Возвращает:
текущее число месяца, не null

of

public static MonthDay of(Month month, int dayOfMonth)
Получает экземпляр MonthDay.

Число месяца должно быть допустимым для месяца в високосном году. Следовательно, для февраля число 29 является допустимым.

Например, передача апреля и числа 31 вызовет исключение, так как в любом году не может быть 31 апреля. В отличие от этого, передача 29 февраля разрешена, так как это число месяца может быть иногда допустимым.

Параметры:
month - месяц для представления, не null
dayOfMonth - число месяца для представления, от 1 до 31
Возвращает:
число месяца, не null
Исключения:
DateTimeException - если значение любого поля находится вне диапазона или если число месяца недопустимо для месяца

of

public static MonthDay of(int month, int dayOfMonth)
Получает экземпляр MonthDay.

Число месяца должно быть допустимым для месяца в високосном году. Следовательно, для месяца 2 (февраль) число 29 является допустимым.

Например, передача месяца 4 (апрель) и числа 31 вызовет исключение, так как в любом году не может быть 31 апреля. В отличие от этого, передача 29 февраля разрешена, так как это число месяца может быть иногда допустимым.

Параметры:
month - месяц для представления, от 1 (январь) до 12 (декабрь)
dayOfMonth - число месяца для представления, от 1 до 31
Возвращает:
число месяца, не null
Исключения:
DateTimeException - если значение любого поля находится вне диапазона или если число месяца недопустимо для месяца

from

public static MonthDay from(TemporalAccessor temporal)
Получает экземпляр MonthDay из временного объекта.

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

Преобразование извлекает поля MONTH_OF_YEAR и DAY_OF_MONTH. Извлечение разрешено только если временной объект имеет хронологию ISO или может быть преобразован в LocalDate.

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

Параметры:
temporal - временной объект для преобразования, не null
Возвращает:
число месяца, не null
Исключения:
DateTimeException - если невозможно преобразовать в MonthDay

parse

public static MonthDay parse(CharSequence text)
Получает экземпляр MonthDay из текстовой строки, такой как --12-03.

Строка должна представлять собой допустимое число месяца. Формат --MM-dd.

Параметры:
text - текст для разбора, например "--12-03", не null
Возвращает:
разбор числа месяца, не null
Исключения:
DateTimeParseException - если текст не может быть разобран

parse

public static MonthDay parse(CharSequence text, DateTimeFormatter formatter)
Получает экземпляр MonthDay из текстовой строки с использованием определенного форматера.

Текст разбирается с использованием форматера, возвращая число месяца.

Параметры:
text - текст для разбора, не null
formatter - используемый форматер, не null
Возвращает:
разбор числа месяца, не null
Исключения:
DateTimeParseException - если текст не может быть разобран

isSupported

public boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.

Проверяет, может ли быть запрошен этот месяц для указанного поля. Если ложно, то вызов методов range и get вызовет исключение.

Если поле является ChronoField, то запрос реализован здесь. Поддерживаемые поля:

  • MONTH_OF_YEAR
  • YEAR
Все остальные ChronoField экземпляры вернут false.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддержка поля определяется полем.

Определено в:
isSupported в интерфейсе TemporalAccessor
Параметры:
field - проверяемое поле, null возвращает false
Возвращает:
true, если поле поддерживается этим числом месяца, false — если нет

range

public ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.

Объект диапазона выражает минимальное и максимальное допустимые значения для поля. Это число месяца используется для повышения точности возвращаемого диапазона. Если невозможно вернуть диапазон, потому что поле не поддерживается или по другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализован здесь. supported fields вернет соответствующие экземпляры диапазона. Все остальные ChronoField экземпляры выбросят исключение UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.rangeRefinedBy(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения диапазона определяется полем.

Определено в:
range в интерфейсе TemporalAccessor
Параметры:
field - поле, для которого запрашивается диапазон, не null
Возвращает:
диапазон допустимых значений для поля, не null
Исключения:
DateTimeException - если диапазон для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается

get

public int get(TemporalField field)
Получает значение указанного поля из этого числа месяца как int.

Запрашивает у этого числа месяца значение указанного поля. Возвращаемое значение всегда будет находиться в пределах допустимого диапазона значений для поля. Если невозможно вернуть значение, потому что поле не поддерживается или по другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализован здесь. supported fields вернет допустимые значения на основе этого числа месяца. Все остальные ChronoField экземпляры выбросят исключение UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и то, что значение представляет, определяется полем.

Определено в:
get в интерфейсе TemporalAccessor
Параметры:
field - запрашиваемое поле, не null
Возвращает:
значение поля
Исключения:
DateTimeException - если значение для поля получить невозможно или значение находится вне допустимого диапазона для поля
UnsupportedTemporalTypeException - если поле не поддерживается или диапазон значений превышает int
ArithmeticException - если произошел переполнение чисел

getLong

public long getLong(TemporalField field)
Получает значение указанного поля из этого объекта Month-Day как long.

Запрашивает значение указанного поля у этого объекта Month-Day. Если значение вернуть невозможно, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализован здесь. supported fields будет возвращать допустимые значения на основе этого объекта Month-Day. Все остальные ChronoField экземпляры будут выбрасывать UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путем вызова TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.

Specified by:
getLong в интерфейсе TemporalAccessor
Parameters:
field - поле для получения, не null
Returns:
значение поля
Throws:
DateTimeException - если значение для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - если происходит переполнение числового значения

getMonthValue

public int getMonthValue()
Получает поле месяца от 1 до 12.

Этот метод возвращает месяц как целое число от 1 до 12. Код приложения часто будет более понятным, если использовать перечисление Month вызвав getMonth().

Returns:
месяц, от 1 до 12
See Also:
  • getMonth()

getMonth

public Month getMonth()
Получает поле месяца с использованием перечисления Month.

Этот метод возвращает перечисление Month для месяца. Это позволяет избежать путаницы, какие int значения означают. Если вам нужен доступ к примитивному значению int, то перечисление предоставляет int value.

Returns:
месяц, не null
See Also:
  • getMonthValue()

getDayOfMonth

public int getDayOfMonth()
Получает поле дня месяца.

Этот метод возвращает примитивное целое число значение для дня месяца.

Returns:
день месяца, от 1 до 31

isValidYear

public boolean isValidYear(int year)
Проверяет, является ли год допустимым для этого объекта Month-Day.

Этот метод проверяет, образуют ли этот месяц, день и введенный год допустимую дату. Этот метод может вернуть false только для 29 февраля.

Parameters:
year - год для проверки
Returns:
true, если год допустим для этого объекта Month-Day
See Also:
  • Year.isValidMonthDay(MonthDay)

withMonth

public MonthDay withMonth(int month)
Возвращает копию этого объекта MonthDay с измененным месяцем.

Возвращает объект Month-Day с указанным месяцем. Если день месяца недействителен для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
month - месяц для установки в возвращаемом объекте Month-Day, от 1 (январь) до 12 (декабрь)
Returns:
объект MonthDay на основе этого объекта Month-Day с запрошенным месяцем, не null
Throws:
DateTimeException - если значение месяца недействительно

with

public MonthDay with(Month month)
Возвращает копию этого объекта MonthDay с измененным месяцем.

Возвращает объект Month-Day с указанным месяцем. Если день месяца недействителен для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
month - месяц для установки в возвращаемом объекте Month-Day, не null
Returns:
объект MonthDay на основе этого объекта Month-Day с запрошенным месяцем, не null

withDayOfMonth

public MonthDay withDayOfMonth(int dayOfMonth)
Возвращает копию этого объекта MonthDay с измененным днем месяца.

Возвращает объект Month-Day с указанным днем месяца. Если день месяца недействителен для месяца, выбрасывается исключение.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
dayOfMonth - день месяца для установки в возвращаемом объекте Month-Day, от 1 до 31
Returns:
объект MonthDay на основе этого объекта Month-Day с запрошенным днем, не null
Throws:
DateTimeException - если значение дня месяца недействительно, или если день месяца недействителен для месяца

query

public <R> R query(TemporalQuery<R> query)
Запрашивает этот объект Month-Day с использованием указанного запроса.

Запрашивает этот объект Month-Day с использованием указанной стратегии запроса. Объект TemporalQuery определяет логику для получения результата. Прочитайте документацию запроса, чтобы понять, каким будет результат этого метода.

Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе с передачей this в качестве аргумента.

Specified by:
query в интерфейсе TemporalAccessor
Type Parameters:
R - тип результата
Parameters:
query - запрос для вызова, не null
Returns:
результат запроса, может быть null (определяется запросом)
Throws:
DateTimeException - если запрос выполнить невозможно (определяется запросом)
ArithmeticException - если происходит переполнение числового значения (определяется запросом)

adjustInto

public Temporal adjustInto(Temporal temporal)
Изменяет указанный объект временной точки, чтобы он содержал этот объект Month-Day.

Возвращает объект временной точки того же наблюдаемого типа, что и входной объект, с измененным месяцем и днем месяца, равным этому.

Изменение эквивалентно двукратному использованию Temporal.with(TemporalField, long), передавая ChronoField.MONTH_OF_YEAR и ChronoField.DAY_OF_MONTH в качестве полей. Если указанный объект временной точки не использует ISO-календарь, выбрасывается DateTimeException.

В большинстве случаев более понятно использовать обратный порядок вызовов, используя Temporal.with(TemporalAdjuster):

   // these two lines are equivalent, but the second approach is recommended
   temporal = thisMonthDay.adjustInto(temporal);
   temporal = temporal.with(thisMonthDay);
 

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Specified by:
adjustInto в интерфейсе TemporalAdjuster
Parameters:
temporal - целевой объект для изменения, не null
Returns:
измененный объект, не null
Throws:
DateTimeException - если изменение невозможно выполнить
ArithmeticException - если происходит переполнение числового значения

format

public String format(DateTimeFormatter formatter)
Форматирует этот объект Month-Day с использованием указанного форматера.

Этот объект Month-Day будет передан в форматер для создания строки.

Parameters:
formatter - используемый форматер, не null
Returns:
форматированная строка объекта Month-Day, не null
Throws:
DateTimeException - если произошла ошибка при печати

atYear

public LocalDate atYear(int year)
Объединяет этот объект Month-Day с годом, чтобы создать объект LocalDate.

Возвращает объект LocalDate, образованный из этого объекта Month-Day и указанного года.

Объект Month-Day 29 февраля будет скорректирован на 28 февраля в результирующей дате, если год не является високосным.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
year - год для использования, от MIN_YEAR до MAX_YEAR
Returns:
объект LocalDate, образованный из этого объекта Month-Day и указанного года, не null
Throws:
DateTimeException - если год находится вне допустимого диапазона годов

compareTo

public int compareTo(MonthDay other)
Сравнивает этот объект Month-Day с другим объектом Month-Day.

Сравнение основано сначала на значении месяца, а затем на значении дня. Оно "совместимо с equals", как определено в Comparable.

Specified by:
compareTo в интерфейсе Comparable<MonthDay>
Parameters:
other - другой объект Month-Day для сравнения, не null
Returns:
значение компаратора, отрицательное, если меньше, положительное, если больше

isAfter

public boolean isAfter(MonthDay other)
Проверяет, является ли этот объект Month-Day после указанного объекта Month-Day.
Parameters:
other - другой объект Month-Day для сравнения, не null
Returns:
true, если этот объект после указанного объекта Month-Day
END_OF_DOCUMENT_MARKER

isBefore

public boolean isBefore(MonthDay other)
Проверяет, является ли этот день месяца раньше указанного дня месяца.
Параметры:
other - другой день месяца для сравнения, не null
Возвращает:
true, если этот момент времени предшествует указанному дню месяца

equals

public boolean equals(Object obj)
Проверяет, равен ли этот день месяца другому дню месяца.

Сравнение основано на временной позиции дня месяца в году.

Переопределяет:
equals в классе Object
Параметры:
obj - объект для проверки, null возвращает false
Возвращает:
true, если этот день месяца равен другому
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хэш-код для этого дня месяца.
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хэш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString()
Выводит этот день месяца как String, например, --12-03.

Вывод будет в формате --MM-dd:

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого дня месяца, не 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/MonthDay.html

Spec-Zone.ru

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