Spec-Zone.ru › OpenJDK 24

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

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

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

Если поле является ChronoField, то запрос реализуется здесь. supported fields вернёт допустимые значения на основе этого объекта Month-Day. Все другие 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)
Проверяет, является ли год допустимым для этого объекта Month-Day.

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

Параметры:
year - год для проверки
Возвращает:
true, если год допустим для этого объекта Month-Day
См. также:
  • Year.isValidMonthDay(MonthDay)

withMonth

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

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

Этот объект неизменяемый и не изменяется этим методом.

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

with

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

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

Этот объект неизменяемый и не изменяется этим методом.

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

withDayOfMonth

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

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

Этот объект неизменяемый и не изменяется этим методом.

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

query

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

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

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

Определено в:
query в интерфейсе TemporalAccessor
Параметры типа:
R - тип результата
Параметры:
query - запрос для вызова, не null
Возвращает:
результат запроса, может быть null (определяется запросом)
Исключения:
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);
 

Этот объект неизменяемый и не изменяется этим методом.

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

format

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

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

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

atYear

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

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

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

Этот объект неизменяемый и не изменяется этим методом.

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

compareTo

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

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

Specified by:
compareTo в интерфейсе Comparable<MonthDay>
Parameters:
other - другой день месяца для сравнения, не null
Returns:
значение компаратора, меньшее нуля, если текущий день предшествует other, ноль, если они равны, больше нуля, если текущий день следует за other
See Also:
  • isBefore(java.time.MonthDay)
  • isAfter(java.time.MonthDay)

isAfter

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

isBefore

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

equals

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

Сравнение основано на временном положении дня месяца в течение года.

Overrides:
equals в классе Object
Parameters:
obj - объект для проверки, null возвращает false
Returns:
true, если этот день месяца равен другому
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хеш-код для этого дня месяца.
Overrides:
hashCode в классе Object
Returns:
подходящий хеш-код
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

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

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

Overrides:
toString в классе Object
Returns:
строковое представление этого дня месяца, не null

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/MonthDay.html

Spec-Zone.ru

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