Класс MonthDay
- Все реализуемые интерфейсы:
Serializable, Comparable<MonthDay>, TemporalAccessor, TemporalAdjuster
public final class MonthDay extends Object implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable
--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 |
Настраивает указанный объект временных данных так, чтобы он содержал этот месяц и день. |
LocalDate |
atYear |
Объединяет этот месяц и день с годом, чтобы создать LocalDate. |
int |
compareTo |
Сравнивает этот месяц и день с другим месяцем и днём. |
boolean |
equals |
Проверяет, равен ли этот месяц и день другому месяцу и дню. |
String |
format |
Форматирует этот месяц и день с помощью указанного форматировщика. |
static MonthDay |
from |
Получает экземпляр MonthDay из объекта временных данных. |
int |
get |
Возвращает значение указанного поля этого месяца и дня в виде int. |
int |
getDayOfMonth() |
Возвращает значение поля «день месяца». |
long |
getLong |
Возвращает значение указанного поля этого месяца и дня в виде long. |
Month |
getMonth() |
Возвращает значение поля «месяц года» с использованием перечисления Month. |
int |
getMonthValue() |
Возвращает значение поля «месяц года» в диапазоне от 1 до 12. |
int |
hashCode() |
Хеш-код этого месяца и дня. |
boolean |
isAfter |
Проверяет, наступает ли этот месяц и день после указанного месяца и дня. |
boolean |
isBefore |
Проверяет, наступает ли этот месяц и день до указанного месяца и дня. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
boolean |
isValidYear |
Проверяет, допустим ли указанный год для этого месяца и дня. |
static MonthDay |
now() |
Получает текущие месяц и день по системным часам в часовом поясе по умолчанию. |
static MonthDay |
now |
Получает текущие месяц и день по указанным часам. |
static MonthDay |
now |
Получает текущие месяц и день по системным часам в указанном часовом поясе. |
static MonthDay |
of |
Получает экземпляр MonthDay. |
static MonthDay |
of |
Получает экземпляр MonthDay. |
static MonthDay |
parse |
Получает экземпляр MonthDay из текстовой строки, например --12-03. |
static MonthDay |
parse |
Получает экземпляр MonthDay из текстовой строки с использованием указанного форматировщика. |
<R> R |
query |
Выполняет запрос к этому месяцу и дню с помощью указанного запроса. |
ValueRange |
range |
Возвращает диапазон допустимых значений для указанного поля. |
String |
toString() |
Выводит этот месяц и день в виде String, например --12-03. |
MonthDay |
with |
Возвращает копию этого MonthDay с изменённым значением поля «месяц года». |
MonthDay |
withDayOfMonth |
Возвращает копию этого MonthDay с изменённым значением поля «день месяца». |
MonthDay |
withMonth |
Возвращает копию этого MonthDay с изменённым значением поля «месяц года». |
Подробное описание методов
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()
Этот метод возвращает месяц в виде int от 1 до 12. Код приложения часто становится понятнее, если использовать перечисление Month, вызвав getMonth().
- Возвращает:
- месяц года от 1 до 12
- См. также:
getMonth
public Month getMonth()
Month. Этот метод возвращает перечисление Month, соответствующее месяцу. Это позволяет избежать неоднозначности значений int. Если требуется доступ к примитивному значению int, в перечислении предусмотрен метод int value.
- Возвращает:
- месяц года; значение не равно null
- См. также:
getDayOfMonth
public int getDayOfMonth()
Этот метод возвращает примитивное значение int для дня месяца.
- Возвращает:
- день месяца от 1 до 31
isValidYear
public boolean isValidYear(int year)
Этот метод проверяет, образуют ли данный месяц и день вместе с указанным годом допустимую дату. Значение false может быть возвращено только для 29 февраля.
- Параметры:
-
year— проверяемый год - Возвращает:
- true, если год допустим для этих месяца и дня
- См. также:
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 - См. также:
isAfter
public boolean isAfter(MonthDay other)
- Параметры:
-
other— другие месяц и день для сравнения; значение не равно null - Возвращает:
- true, если эти месяц и день идут позже указанной комбинации месяца и дня
isBefore
public boolean isBefore(MonthDay other)
- Параметры:
-
other— другие месяц и день для сравнения; значение не равно null - Возвращает:
- true, если эта комбинация идет раньше указанной комбинации месяца и дня
equals
public boolean equals(Object obj)
Сравнение основано на положении месяца и дня в течение года.
hashCode
toString
© 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