Spec-Zone.ru › OpenJDK 27

Класс 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 с измененным месяцем года.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания, либо истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания, либо истечения определенного промежутка реального времени.

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

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)
Проверяет, поддерживается ли указанное поле.

Проверяет, можно ли получить из этих месяца и дня значение указанного поля. Если возвращается false, вызовы методов 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)
Получает значение указанного поля из этих месяца и дня в виде long.

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

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

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

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

getMonthValue

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

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

Возвращает:
месяц года от 1 до 12
См. также:
  • getMonth()

getMonth

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

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

Возвращает:
месяц года, не null
См. также:
  • getMonthValue()

getDayOfMonth

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

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

Возвращает:
день месяца от 1 до 31

isValidYear

public boolean isValidYear(int year)
Проверяет, допустим ли год для этих месяца и дня.

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

Параметры:
year — год для проверки
Возвращает:
true, если год допустим для этих месяца и дня
См. также:
  • Year.isValidMonthDay(MonthDay)

withMonth

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

Возвращает месяц и день с указанным месяцем. Если день месяца недопустим для указанного месяца, он корректируется до последнего допустимого дня этого месяца.

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
month — месяц года, который требуется установить в возвращаемых месяце и дне, от 1 (январь) до 12 (декабрь)
Возвращает:
объект MonthDay, основанный на этих месяце и дне и содержащий запрошенный месяц, не null
Исключения:
DateTimeException — если значение месяца года недопустимо

with

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

Возвращает месяц и день с указанным месяцем. Если день месяца недопустим для указанного месяца, он корректируется до последнего допустимого дня этого месяца.

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
month — месяц года, который требуется установить в возвращаемых месяце и дне, не null
Возвращает:
объект MonthDay, основанный на этих месяце и дне и содержащий запрошенный месяц, не null

withDayOfMonth

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

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

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
dayOfMonth — день месяца, который требуется установить в возвращаемых месяце и дне, от 1 до 31
Возвращает:
объект MonthDay, основанный на этих месяце и дне и содержащий запрошенный день, не null
Исключения:
DateTimeException — если значение дня месяца недопустимо или день месяца недопустим для данного месяца

query

public <R> R query(TemporalQuery<R> query)
Выполняет запрос к этим месяцу и дню с использованием указанного запроса.

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

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

Указано в:
query в интерфейсе TemporalAccessor
Параметры типа:
R — тип результата
Параметры:
query — запрос для выполнения, не null
Возвращает:
результат запроса; может быть возвращено значение null (определяется запросом)
Исключения:
DateTimeException — если запрос не удалось выполнить (определяется запросом)
ArithmeticException — при переполнении числового значения (определяется запросом)

adjustInto

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

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

Эта корректировка эквивалентна двум вызовам 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);

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Указано в:
adjustInto в интерфейсе TemporalAdjuster
Параметры:
temporal — целевой объект для корректировки, не null
Возвращает:
скорректированный объект, не null
Исключения:
DateTimeException — если выполнить корректировку невозможно
ArithmeticException — при переполнении числового значения

format

public String format(DateTimeFormatter formatter)
Форматирует эти месяц и день с помощью указанного средства форматирования.

Эти месяц и день передаются средству форматирования для преобразования в строку.

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

atYear

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

Возвращает LocalDate, сформированный на основе этих месяца и дня и указанного года.

Если указан 29 февраля, а год не високосный, в результирующей дате он заменяется на 28 февраля.

Этот экземпляр неизменяем, и вызов данного метода на него не влияет.

Параметры:
year — год для использования, от MIN_YEAR до MAX_YEAR
Возвращает:
локальная дата, сформированная на основе этих месяца и дня и указанного года, не null
Исключения:
DateTimeException — если год выходит за допустимый диапазон лет

compareTo

public int compareTo(MonthDay other)
Сравнивает эти месяц и день с другими месяцем и днем.

Сначала сравниваются значения месяца, затем значения дня. Сравнение «согласовано с equals» в соответствии с определением Comparable.

Указано в:
compareTo в интерфейсе Comparable<MonthDay>
Параметры:
other — другие месяц и день для сравнения, не null
Возвращает:
значение сравнения: меньше нуля, если эти месяц и день предшествуют other, ноль, если они равны, больше нуля, если эти месяц и день следуют за other
См. также:
  • isBefore(MonthDay)
  • isAfter(MonthDay)

isAfter

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

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(Object)

toString

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

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

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этих месяца и дня, не null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, общие сведения, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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