Класс 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 с измененным месяцем года. |
Методы, объявленные в классе 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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или прерывания, либо истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода 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()
Этот метод возвращает месяц как 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.