Класс MonthDay
- java.lang.Object
-
- java.time.MonthDay
- Все реализуемые интерфейсы:
-
Serializable,Comparable<MonthDay>,TemporalAccessor,TemporalAdjuster
public final class MonthDay extends Object implements TemporalAccessor, TemporalAdjuster, Comparable<MonthDay>, Serializable
Месяц и день в системе календаря ISO-8601, например, --12-03.
MonthDay это неизменяемый объект даты и времени, представляющий собой комбинацию месяца и числа месяца. Можно получить любые поля, которые можно вывести из месяца и числа, такие как квартал года.
Этот класс не хранит и не представляет год, время или часовой пояс. Например, значение «3 декабря» можно сохранить в MonthDay.
Поскольку MonthDay не содержит год, високосный день 29 февраля считается допустимым.
Этот класс реализует TemporalAccessor, а не Temporal. Это связано с тем, что невозможно определить, является ли 29 февраля допустимым или нет без внешней информации, что препятствует реализации операций прибавления/вычитания. В связи с этим, MonthDay предоставляет только доступ для запроса и установки полей MONTH_OF_YEAR и DAY_OF_MONTH.
Система календаря ISO-8601 — это современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором сегодняшние правила високосных лет применяются для всех времен. Для большинства современных приложений правила ISO-8601 полностью подходят. Однако любое приложение, которое использует исторические даты и требует, чтобы они были точными, обнаружит, что подход ISO-8601 непригоден.
Это класс значение-базисный; использование операций, чувствительных к идентификаторам (включая равенство ссылок (==), хэш-код идентификатора или синхронизацию) для экземпляров MonthDay может привести к непредсказуемым результатам и должно быть избегаемо. Для сравнений необходимо использовать метод equals.
- Требования к реализации:
- Этот класс неизменяем и потокобезопасен.
- С:
- 1.8
- См. также:
- Сериализованная форма
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Temporal | adjustInto(Temporal temporal) | Настраивает указанный временной объект, чтобы он имел этот месяц и день. |
LocalDate | atYear(int year) | Комбинирует этот месяц и день с годом, чтобы создать |
int | compareTo(MonthDay other) | Сравнивает этот месяц и день с другим месяцем и днем. |
boolean | equals(Object obj) | Проверяет, равен ли этот месяц и день другому месяцу и дню. |
String | format(DateTimeFormatter formatter) | Форматирует этот месяц и день с помощью указанного форматера. |
static MonthDay | from(TemporalAccessor temporal) | Получает экземпляр |
int | get(TemporalField field) | Получает значение указанного поля из этого месяца и дня как |
int | getDayOfMonth() | Получает поле день месяца. |
long | getLong(TemporalField field) | Получает значение указанного поля из этого месяца и дня как |
Month | getMonth() | Получает поле месяц года, используя перечисление |
int | getMonthValue() | Получает поле месяц года от 1 до 12. |
int | hashCode() | Хэш-код для этого месяца и дня. |
boolean | isAfter(MonthDay other) | Проверяет, следует ли этот месяц и день после указанного месяца и дня. |
boolean | isBefore(MonthDay other) | Проверяет, предшествует ли этот месяц и день указанному месяцу и дню. |
boolean | isSupported(TemporalField field) | Проверяет, поддерживается ли указанное поле. |
boolean | isValidYear(int year) | Проверяет, является ли год допустимым для этого месяца и дня. |
static MonthDay | now() | Получает текущий месяц и день из системных часов в часовом поясе по умолчанию. |
static MonthDay | now(Clock clock) | Получает текущий месяц и день из указанных часов. |
static MonthDay | now(ZoneId zone) | Получает текущий месяц и день из системных часов в указанном часовом поясе. |
static MonthDay | of(int month,
int dayOfMonth) | Получает экземпляр |
static MonthDay | of(Month month,
int dayOfMonth) | Получает экземпляр |
static MonthDay | parse(CharSequence text) | Получает экземпляр |
static MonthDay | parse(CharSequence text,
DateTimeFormatter formatter) | Получает экземпляр |
<R> R | query(TemporalQuery<R> query) | Запрашивает этот месяц и день с использованием указанного запроса. |
ValueRange | range(TemporalField field) | Получает диапазон допустимых значений для указанного поля. |
String | toString() | Выводит этот месяц и день как |
MonthDay | with(Month month) | Возвращает копию этого |
MonthDay | withDayOfMonth(int dayOfMonth) | Возвращает копию этого |
MonthDay | withMonth(int month) | Возвращает копию этого |
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait Методы
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()
Возвращает поле месяца от 1 до 12.
Этот метод возвращает месяц в виде int от 1 до 12. Код приложения часто более понятен, если используется перечисление Month вызывая getMonth().
- Возвращает:
- месяц от 1 до 12
- См. также:
getMonth()
getMonth
public Month getMonth()
Возвращает поле месяца с помощью перечисления Month.
Этот метод возвращает перечисление Month для месяца. Это позволяет избежать путаницы в значениях int. Если нужен доступ к примитивному значению int , то перечисление предоставляет int value.
- Возвращает:
- месяц, не null
- См. также:
getMonthValue()
getDayOfMonth
public int getDayOfMonth()
Возвращает поле дня месяца.
Этот метод возвращает примитивное значение int для дня месяца.
- Возвращает:
- день месяца, от 1 до 31
isValidYear
public boolean isValidYear(int year)
Проверяет, является ли год допустимым для этого дня месяца.
Этот метод проверяет, образуют ли данный месяц, день и введённый год допустимую дату. Это может вернуть false только для 29 февраля.
- Параметры:
-
year- год для проверки - Возвращает:
- true, если год допустим для данного дня месяца
- См. также:
Year.isValidMonthDay(MonthDay)
withMonth
public MonthDay withMonth(int month)
Возвращает копию этого MonthDay с изменённым полем месяца.
Это возвращает день месяца с указанным месяцем. Если день месяца недопустим для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот экземпляр неизменяемый и не изменяется этим вызовом метода.
- Параметры:
-
month- месяц для установки в возвращаемом дне месяца, от 1 (января) до 12 (декабря) - Возвращает:
- день месяца, основанный на этом дне месяца с запрошенным месяцем, не null
- Исключения:
-
DateTimeException- если значение месяца некорректно
with
public MonthDay with(Month month)
Возвращает копию этого MonthDay с изменённым полем месяца.
Это возвращает день месяца с указанным месяцем. Если день месяца недопустим для указанного месяца, день будет скорректирован до последнего допустимого дня месяца.
Этот экземпляр неизменяемый и не изменяется этим вызовом метода.
- Параметры:
-
month- месяц для установки в возвращаемом дне месяца, не null - Возвращает:
- день месяца, основанный на этом дне месяца с запрошенным месяцем, не null
withDayOfMonth
public MonthDay withDayOfMonth(int dayOfMonth)
Возвращает копию этого MonthDay с изменённым полем дня месяца.
Это возвращает день месяца с указанным днём месяца. Если день месяца недопустим для месяца, выбрасывается исключение.
Этот экземпляр неизменяемый и не изменяется этим вызовом метода.
- Параметры:
-
dayOfMonth- день месяца для установки в возвращаемом дне месяца, от 1 до 31 - Возвращает:
- день месяца, основанный на этом дне месяца с запрошенным днём, не 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 - Возвращает:
- значение сравнения, отрицательное, если меньше, положительное, если больше
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, если этот день месяца равен другому дню месяца
- См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Хэш-код для этого дня месяца.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хэш-код
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
toString
public String toString()
Выводит этот день месяца как String , например --12-03.
Вывод будет в формате --MM-dd:
© 1993, 2020, 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/11/docs/api/java.base/java/time/MonthDay.html