Класс 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)

Комбинирует этот месяц и день с годом, чтобы создать LocalDate.

int compareTo​(MonthDay other)

Сравнивает этот месяц и день с другим месяцем и днем.

boolean equals​(Object obj)

Проверяет, равен ли этот месяц и день другому месяцу и дню.

String format​(DateTimeFormatter formatter)

Форматирует этот месяц и день с помощью указанного форматера.

static MonthDay from​(TemporalAccessor temporal)

Получает экземпляр MonthDay из временного объекта.

int get​(TemporalField field)

Получает значение указанного поля из этого месяца и дня как int.

int getDayOfMonth()

Получает поле день месяца.

long getLong​(TemporalField field)

Получает значение указанного поля из этого месяца и дня как long.

Month getMonth()

Получает поле месяц года, используя перечисление Month.

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)

Получает экземпляр MonthDay.

static MonthDay of​(Month month, int dayOfMonth)

Получает экземпляр MonthDay.

static MonthDay parse​(CharSequence text)

Получает экземпляр MonthDay из текстовой строки, например, --12-03.

static MonthDay parse​(CharSequence text, DateTimeFormatter formatter)

Получает экземпляр MonthDay из текстовой строки с помощью определенного форматера.

<R> R query​(TemporalQuery<R> query)

Запрашивает этот месяц и день с использованием указанного запроса.

ValueRange range​(TemporalField field)

Получает диапазон допустимых значений для указанного поля.

String toString()

Выводит этот месяц и день как String, например, --12-03.

MonthDay with​(Month month)

Возвращает копию этого MonthDay с измененным месяцем года.

MonthDay withDayOfMonth​(int dayOfMonth)

Возвращает копию этого MonthDay с измененным числом месяца.

MonthDay withMonth​(int month)

Возвращает копию этого MonthDay с измененным месяцем года.

Методы, объявленные в классе 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:

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого дня месяца, не null

© 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

Spec-Zone .ru
спецификации, руководства, описания, API