Класс 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. Этот метод запрашивает значение указанного поля у этого объекта 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()
Этот метод возвращает месяц в виде 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, если год допустим для этого объекта Month-Day
- См. также:
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, используя указанный объект стратегии запроса. Объект 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)
Этот объект Month-Day будет передан форматтеру для получения строки.
- Параметры:
-
formatter- форматтер для использования, не null - Возвращает:
- строка отформатированного объекта Month-Day, не null
- Исключения:
-
DateTimeException- если произошла ошибка во время печати
atYear
public LocalDate atYear(int year)
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:
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)
Сравнение основано на временном положении дня месяца в течение года.
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/MonthDay.html