Spec-Zone.ru › OpenJDK 25

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

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/MonthDay.html

Spec-Zone.ru

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