Класс 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)
Проверяет, может ли быть запрошен этот месяц для указанного поля. Если ложно, то вызов методов 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 в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.
- Specified by:
-
getLongв интерфейсеTemporalAccessor - Parameters:
-
field- поле для получения, не null - Returns:
- значение поля
- Throws:
-
DateTimeException- если значение для поля получить невозможно -
UnsupportedTemporalTypeException- если поле не поддерживается -
ArithmeticException- если происходит переполнение числового значения
getMonthValue
public int getMonthValue()
Этот метод возвращает месяц как целое число от 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()
Этот метод возвращает примитивное целое число значение для дня месяца.
- Returns:
- день месяца, от 1 до 31
isValidYear
public boolean isValidYear(int year)
Этот метод проверяет, образуют ли этот месяц, день и введенный год допустимую дату. Этот метод может вернуть false только для 29 февраля.
- Parameters:
-
year- год для проверки - Returns:
- true, если год допустим для этого объекта Month-Day
- See Also:
withMonth
public MonthDay withMonth(int month)
MonthDay с измененным месяцем. Возвращает объект Month-Day с указанным месяцем. Если день месяца недействителен для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот объект неизменяемый и не изменяется в результате вызова этого метода.
- Parameters:
-
month- месяц для установки в возвращаемом объекте Month-Day, от 1 (январь) до 12 (декабрь) - Returns:
- объект
MonthDayна основе этого объекта Month-Day с запрошенным месяцем, не null - Throws:
-
DateTimeException- если значение месяца недействительно
with
public MonthDay with(Month month)
MonthDay с измененным месяцем. Возвращает объект Month-Day с указанным месяцем. Если день месяца недействителен для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот объект неизменяемый и не изменяется в результате вызова этого метода.
- Parameters:
-
month- месяц для установки в возвращаемом объекте Month-Day, не null - Returns:
- объект
MonthDayна основе этого объекта Month-Day с запрошенным месяцем, не null
withDayOfMonth
public MonthDay withDayOfMonth(int dayOfMonth)
MonthDay с измененным днем месяца. Возвращает объект Month-Day с указанным днем месяца. Если день месяца недействителен для месяца, выбрасывается исключение.
Этот объект неизменяемый и не изменяется в результате вызова этого метода.
- Parameters:
-
dayOfMonth- день месяца для установки в возвращаемом объекте Month-Day, от 1 до 31 - Returns:
- объект
MonthDayна основе этого объекта Month-Day с запрошенным днем, не null - Throws:
-
DateTimeException- если значение дня месяца недействительно, или если день месяца недействителен для месяца
query
public <R> R query(TemporalQuery<R> query)
Запрашивает этот объект Month-Day с использованием указанной стратегии запроса. Объект 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)
Этот объект Month-Day будет передан в форматер для создания строки.
- Parameters:
-
formatter- используемый форматер, не null - Returns:
- форматированная строка объекта Month-Day, не null
- Throws:
-
DateTimeException- если произошла ошибка при печати
atYear
public LocalDate atYear(int year)
LocalDate. Возвращает объект LocalDate, образованный из этого объекта Month-Day и указанного года.
Объект Month-Day 29 февраля будет скорректирован на 28 февраля в результирующей дате, если год не является високосным.
Этот объект неизменяемый и не изменяется в результате вызова этого метода.
- Parameters:
-
year- год для использования, от MIN_YEAR до MAX_YEAR - Returns:
- объект LocalDate, образованный из этого объекта Month-Day и указанного года, не null
- Throws:
-
DateTimeException- если год находится вне допустимого диапазона годов
compareTo
public int compareTo(MonthDay other)
Сравнение основано сначала на значении месяца, а затем на значении дня. Оно "совместимо с equals", как определено в Comparable.
- Specified by:
-
compareToв интерфейсеComparable<MonthDay> - Parameters:
-
other- другой объект Month-Day для сравнения, не null - Returns:
- значение компаратора, отрицательное, если меньше, положительное, если больше
isAfter
public boolean isAfter(MonthDay other)
- Parameters:
-
other- другой объект Month-Day для сравнения, не null - Returns:
- true, если этот объект после указанного объекта Month-Day
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, 2021, 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/17/docs/api/java.base/java/time/MonthDay.html