Класс 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 в качестве аргумента. Возможна ли получение значения и что оно представляет, определяется полем.
- Specified by:
-
getLongв интерфейсеTemporalAccessor - Parameters:
-
field- поле для получения, не null - Returns:
- значение для поля
- Throws:
-
DateTimeException- если значение для поля получить невозможно -
UnsupportedTemporalTypeException- если поле не поддерживается -
ArithmeticException- если происходит переполнение числовых значений
getMonthValue
public int getMonthValue()
Этот метод возвращает месяц в виде int от 1 до 12. Код приложения часто понятнее, если используется перечисление Month, вызывая getMonth().
- Returns:
- месяц, от 1 до 12
- See Also:
getMonth
public Month getMonth()
Month. Этот метод возвращает перечисление Month для месяца. Это позволяет избежать неоднозначности в значениях int. Если нужен доступ к примитивному значению int, то перечисление предоставляет int value.
- Returns:
- месяц, не null
- See Also:
getDayOfMonth
public int getDayOfMonth()
Этот метод возвращает примитивное значение int для дня месяца.
- Returns:
- день месяца, от 1 до 31
isValidYear
public boolean isValidYear(int year)
Этот метод проверяет, образуют ли этот месяц, день и введённый год допустимую дату. Возвращает false только для 29 февраля.
- Parameters:
-
year- год для проверки - Returns:
- true, если год допустим для этого месяца-дня
- See Also:
withMonth
public MonthDay withMonth(int month)
MonthDay с изменённым месяцем. Возвращает месяц-день со заданным месяцем. Если день месяца недопустим для заданного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Parameters:
-
month- месяц для установки в возвращаемом месяце-дне, от 1 (январь) до 12 (декабрь) - Returns:
- месяц-день на основе этого месяца-дня с запрошенным месяцем, не null
- Throws:
-
DateTimeException- если значение месяца неверно
with
public MonthDay with(Month month)
MonthDay с изменённым месяцем. Возвращает месяц-день со заданным месяцем. Если день месяца недопустим для заданного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Parameters:
-
month- месяц для установки в возвращаемом месяце-дне, не null - Returns:
- месяц-день на основе этого месяца-дня с запрошенным месяцем, не null
withDayOfMonth
public MonthDay withDayOfMonth(int dayOfMonth)
MonthDay с изменённым днём месяца. Возвращает месяц-день со заданным днём месяца. Если день месяца недопустим для месяца, выбрасывается исключение.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Parameters:
-
dayOfMonth- день месяца для установки в возвращаемом месяце-дне, от 1 до 31 - Returns:
- месяц-день на основе этого месяца-дня с запрошенным днём, не null
- Throws:
-
DateTimeException- если значение дня месяца неверно или если день месяца недопустим для месяца
query
public <R> R query(TemporalQuery<R> query)
Запрашивает этот месяц-день с использованием указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Прочитайте документацию запроса, чтобы понять, каким будет результат этого метода.
Результат этого метода получается путём вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе, передавая this в качестве аргумента.
- Specified by:
-
queryв интерфейсеTemporalAccessor - Type Parameters:
-
R- тип результата - Parameters:
-
query- запрос для вызова, не null - Returns:
- результат запроса, может быть null (определяется запросом)
- Throws:
-
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);
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Specified by:
-
adjustIntoв интерфейсеTemporalAdjuster - Parameters:
-
temporal- целевой объект для корректировки, не null - Returns:
- скорректированный объект, не null
- Throws:
-
DateTimeException- если корректировка невозможна -
ArithmeticException- если происходит переполнение числовых значений
format
public String format(DateTimeFormatter formatter)
Этот месяц-день будет передан форматеру для создания строки.
- Parameters:
-
formatter- используемый форматер, не null - Returns:
- строка отформатированного месяца-дня, не null
- Throws:
-
DateTimeException- если произошла ошибка при печати
atYear
public LocalDate atYear(int year)
LocalDate. Возвращает LocalDate, сформированное из этого месяца-дня и указанного года.
Месяц-день 29 февраля будет скорректирован на 28 февраля в полученной дате, если год не високосный.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Parameters:
-
year- используемый год, от MIN_YEAR до MAX_YEAR - Returns:
- локальная дата, сформированная из этого месяца-дня и указанного года, не null
- Throws:
-
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)
- Параметры:
-
other- другой день месяца для сравнения, не null - Возвращает:
- true, если этот день месяца после указанного
isBefore
public boolean isBefore(MonthDay other)
- Параметры:
-
other- другой день месяца для сравнения, не null - Возвращает:
- true, если этот момент до указанного дня месяца
equals
public boolean equals(Object obj)
Сравнение основано на временном положении дня месяца в году.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект для проверки, null возвращает false - Возвращает:
- true, если этот день месяца равен другому
- См. также:
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хэш-код
- См. также:
toString
public String toString()
String, например --12-03. Вывод будет в формате --MM-dd:
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого дня месяца, не null
© 1993, 2023, 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/21/docs/api/java.base/java/time/MonthDay.html