Класс 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 непригодным.
Это класс value-based; использование операций, чувствительных к идентичности (включая равенство ссылок (==), хэш-код идентичности или синхронизацию) на экземплярах 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()
Возвращает поле месяца от 1 до 12, используя перечисление 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-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 с использованием указанного запроса.
Этот метод выполняет запрос к этому month-day с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику для получения результата. Прочитайте документацию запроса, чтобы понять, что будет результатом этого метода.
Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе с this в качестве аргумента.
- Указано в:
-
queryв интерфейсеTemporalAccessor - Параметры типа:
-
R- тип результата - Параметры:
-
query- вызываемый запрос, не null - Возвращает:
- результат запроса, может быть null (определяется запросом)
- Исключения:
-
DateTimeException- если запрос не удался (определяется запросом) -
ArithmeticException- если произошло переполнение числового типа (определяется запросом)
adjustInto
public Temporal adjustInto(Temporal temporal)
Настраивает указанный объект временной шкалы на использование этого month-day.
Возвращает объект временной шкалы того же типа, что и входной, с месяцем и числом месяца, изменёнными на соответствующие этому.
Настройка эквивалентна использованию 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 с использованием указанного форматера.
Этот month-day будет передан форматеру для получения строки.
- Параметры:
-
formatter- используемый форматер, не null - Возвращает:
- строка, форматированный month-day, не null
- Исключения:
-
DateTimeException- если произошла ошибка во время вывода
atYear
public LocalDate atYear(int year)
Объединяет этот month-day с годом для создания LocalDate.
Этот метод возвращает LocalDate, сформированную из этого month-day и указанного года.
Если month-day 29 февраля, он будет изменён на 28 февраля в результирующей дате, если год не високосный.
Этот объект неизменяемый и не изменяется этим методом.
- Параметры:
-
year- используемый год, от MIN_YEAR до MAX_YEAR - Возвращает:
- дата, сформированная из этого month-day и указанного года, не null
- Исключения:
-
DateTimeException- если год выходит за допустимый диапазон
compareTo
public int compareTo(MonthDay other)
Сравнивает этот month-day с другим month-day.
Сравнение выполняется сначала по значению месяца, а затем по значению дня. Оно "совместимо с equals", как определено в Comparable.
- Указано в:
-
compareToв интерфейсеComparable<MonthDay> - Параметры:
-
other- другой month-day для сравнения, не null - Возвращает:
- значение компаратора, отрицательное, если меньше, положительное, если больше
isAfter
public boolean isAfter(MonthDay other)
Проверяет, следует ли этот month-day после указанного month-day.
- Параметры:
-
other- другой month-day для сравнения, не null - Возвращает:
- true, если этот month-day следует после указанного
isBefore
public boolean isBefore(MonthDay other)
Проверяет, предшествует ли этот month-day указанному month-day.
- Параметры:
-
other- другой month-day для сравнения, не null - Возвращает:
- true, если этот month-day предшествует указанному
equals
public boolean equals(Object obj)
Проверяет, равен ли этот month-day другому month-day.
Сравнение основано на временной позиции month-day в году.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект для проверки, null возвращает false - Возвращает:
- true, если этот month-day равен другому
- См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Хэш-код для этого month-day.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хэш-код
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
toString
public String toString()
Выводит этот month-day в виде 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.