Класс Period

Все реализованные интерфейсы:
Serializable, ChronoPeriod, TemporalAmount
public final class Period
extends Object
implements ChronoPeriod, Serializable

Представляет период времени, основанный на дате, в системе календаря ISO-8601, например, '2 года, 3 месяца и 4 дня'.

Этот класс моделирует количество или продолжительность времени в терминах лет, месяцев и дней. См. Duration для эквивалента, основанного на времени.

Продолжительности и периоды отличаются в обращении с летним временем при добавлении к ZonedDateTime. Duration добавит точное количество секунд, поэтому продолжительность одного дня всегда составляет ровно 24 часа. В отличие от этого, Period добавит концептуальный день, пытаясь сохранить локальное время.

Например, рассмотрим добавление периода в один день и продолжительности в один день к 18:00 накануне перехода на летнее время. Period добавит концептуальный день и приведет к ZonedDateTime в 18:00 следующего дня. В отличие от этого, Duration добавит ровно 24 часа, что приведет к ZonedDateTime в 19:00 следующего дня (при условии разрыва в DST в один час).

Поддерживаемые единицы периода — YEARS, MONTHS и DAYS. Все три поля всегда присутствуют, но могут быть установлены в ноль.

Система календаря ISO-8601 — современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором современные правила високосных лет применяются ко всем временам.

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

Это безусловный класс; использование операций, чувствительных к идентичности (включая равенство ссылок (==), хэш-код идентичности или синхронизацию) на экземплярах Period может привести к непредсказуемым результатам и следует избегать. Для сравнений следует использовать метод equals.

Требования к реализации:
Этот класс неизменяемый и потокобезопасный.
С:
1.8
См. также:
Сериализованная форма

Поля

Модификатор и тип Поле Описание
static Period ZERO

Константа для периода ноль.

Методы

Модификатор и тип Метод Описание
Temporal addTo​(Temporal temporal)

Добавляет этот период к указанному объекту временной шкалы.

static Period between​(LocalDate startDateInclusive, LocalDate endDateExclusive)

Получает Period, состоящий из количества лет, месяцев и дней между двумя датами.

boolean equals​(Object obj)

Проверяет, равен ли этот период другому периоду.

static Period from​(TemporalAmount amount)

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

long get​(TemporalUnit unit)

Возвращает значение запрошенной единицы.

IsoChronology getChronology()

Возвращает хронологию этого периода, которая представляет систему календаря ISO.

int getDays()

Возвращает количество дней в этом периоде.

int getMonths()

Возвращает количество месяцев в этом периоде.

List<TemporalUnit> getUnits()

Возвращает набор единиц, поддерживаемых этим периодом.

int getYears()

Возвращает количество лет в этом периоде.

int hashCode()

Хэш-код для этого периода.

boolean isNegative()

Проверяет, является ли какой-либо из трех единиц этого периода отрицательным.

boolean isZero()

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

Period minus​(TemporalAmount amountToSubtract)

Возвращает копию этого периода, из которого вычтен указанный период.

Period minusDays​(long daysToSubtract)

Возвращает копию этого периода, из которого вычтены указанные дни.

Period minusMonths​(long monthsToSubtract)

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

Period minusYears​(long yearsToSubtract)

Возвращает копию этого периода, из которого вычтены указанные годы.

Period multipliedBy​(int scalar)

Возвращает новый экземпляр, в котором каждый элемент в этом периоде умножается на указанный скаляр.

Period negated()

Возвращает новый экземпляр, в котором каждое значение в этом периоде отрицается.

Period normalized()

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

static Period of​(int years, int months, int days)

Получает Period, представляющий количество лет, месяцев и дней.

static Period ofDays​(int days)

Получает Period, представляющий количество дней.

static Period ofMonths​(int months)

Получает Period, представляющий количество месяцев.

static Period ofWeeks​(int weeks)

Получает Period, представляющий количество недель.

static Period ofYears​(int years)

Получает Period, представляющий количество лет.

static Period parse​(CharSequence text)

Получает Period из текстовой строки, такой как PnYnMnD.

Period plus​(TemporalAmount amountToAdd)

Возвращает копию этого периода с добавлением указанного периода.

Period plusDays​(long daysToAdd)

Возвращает копию этого периода с добавлением указанных дней.

Period plusMonths​(long monthsToAdd)

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

Period plusYears​(long yearsToAdd)

Возвращает копию этого периода с добавлением указанных лет.

Temporal subtractFrom​(Temporal temporal)

Вычитает этот период из указанного объекта временной шкалы.

String toString()

Выводит этот период как String, например, P6Y3M1D.

long toTotalMonths()

Возвращает общее количество месяцев в этом периоде.

Period withDays​(int days)

Возвращает копию этого периода с указанным количеством дней.

Period withMonths​(int months)

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

Period withYears​(int years)

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

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

ZERO

public static final Period ZERO

Константа для периода ноль.

Методы

ofYears

public static Period ofYears(int years)

Получает Period , представляющий количество лет.

Результирующий период будет содержать указанное количество лет. Единицы месяцев и дней будут равны нулю.

Параметры:
years - количество лет, положительное или отрицательное
Возвращает:
период лет, не null

ofMonths

public static Period ofMonths(int months)

Получает Period , представляющий количество месяцев.

Результирующий период будет содержать указанное количество месяцев. Единицы лет и дней будут равны нулю.

Параметры:
months - количество месяцев, положительное или отрицательное
Возвращает:
период месяцев, не null

ofWeeks

public static Period ofWeeks(int weeks)

Получает Period , представляющий количество недель.

Результирующий период будет основан на днях, с количеством дней, равным количеству недель, умноженному на 7. Единицы лет и месяцев будут равны нулю.

Параметры:
weeks - количество недель, положительное или отрицательное
Возвращает:
период, с введенными неделями, преобразованными в дни, не null

ofDays

public static Period ofDays(int days)

Получает Period , представляющий количество дней.

Результирующий период будет содержать указанное количество дней. Единицы лет и месяцев будут равны нулю.

Параметры:
days - количество дней, положительное или отрицательное
Возвращает:
период дней, не null

of

public static Period of(int years,
                        int months,
                        int days)

Получает Period , представляющий количество лет, месяцев и дней.

Создает экземпляр на основе лет, месяцев и дней.

Параметры:
years - количество лет, может быть отрицательным
months - количество месяцев, может быть отрицательным
days - количество дней, может быть отрицательным
Возвращает:
период лет, месяцев и дней, не null

from

public static Period from(TemporalAmount amount)

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

Получает период на основе указанного количества. TemporalAmount представляет количество времени, которое может быть основано на дате или времени, которое эта фабрика извлекает в Period.

Преобразование циклически перебирает набор единиц из количества и использует единицы YEARS, MONTHS и DAYS для создания периода. Если будут найдены другие единицы, то будет выброшено исключение.

Если количество является ChronoPeriod , то оно должно использовать хронологию ISO.

Параметры:
amount - временное количество для преобразования, не null
Возвращает:
эквивалентный период, не null
Исключения:
DateTimeException - если невозможно преобразовать в Period
ArithmeticException - если количество лет, месяцев или дней превышает int

parse

public static Period parse(CharSequence text)

Получает Period из текстовой строки, например PnYnMnD.

Это позволит разобрать строку, полученную из toString(), которая основана на форматах периода ISO-8601 PnYnMnD и PnW.

Строка начинается с необязательного знака, обозначенного ASCII отрицательным или положительным символом. Если отрицательный, весь период инвертируется. Следующая буква ASCII - "P" в верхнем или нижнем регистре. Затем четыре раздела, каждый из которых состоит из числа и суффикса. По крайней мере один из четырех разделов должен быть присутствующим. Разделы имеют ASCII-суффиксы "Y", "M", "W" и "D" для лет, месяцев, недель и дней, принимаются в верхнем или нижнем регистре. Суффиксы должны следовать в порядке. Часть числа каждого раздела должна состоять из ASCII цифр. Число может быть предварено ASCII отрицательным или положительным символом. Число должно быть преобразовано в int.

Ведущий знак плюс/минус и отрицательные значения для других единиц не входят в стандарт ISO-8601. Кроме того, ISO-8601 не допускает смешивания между форматами PnYnMnD и PnW. Любые входные данные, основанные на неделях, умножаются на 7 и рассматриваются как количество дней.

Например, следующие являются допустимыми входами:

"P2Y"             -- Period.ofYears(2)
   "P3M"             -- Period.ofMonths(3)
   "P4W"             -- Period.ofWeeks(4)
   "P5D"             -- Period.ofDays(5)
   "P1Y2M3D"         -- Period.of(1, 2, 3)
   "P1Y2M3W4D"       -- Period.of(1, 2, 25)
   "P-1Y2M"          -- Period.of(-1, 2, 0)
   "-P1Y2M"          -- Period.of(-1, -2, 0)
Параметры:
text - текст для разбора, не null
Возвращает:
распарсенный период, не null
Исключения:
DateTimeParseException - если текст не может быть распарсен в период

between

public static Period between(LocalDate startDateInclusive,
                             LocalDate endDateExclusive)

Получает Period , состоящий из количества лет, месяцев и дней между двумя датами.

Начальная дата включена, но конечная дата не включена. Период вычисляется путем удаления полных месяцев, а затем вычисления оставшегося числа дней, корректируя, чтобы обеспечить одинаковый знак у обоих. Количество месяцев затем разбивается на годы и месяцы на основе 12-месячного года. Месяц считается, если конечный день месяца больше или равен начальному дню месяца. Например, от 2010-01-15 до 2011-03-18 составляет один год, два месяца и три дня.

Результат этого метода может быть отрицательным периодом, если конец предшествует началу. Отрицательный знак будет одинаковым для года, месяца и дня.

Параметры:
startDateInclusive - начальная дата, включительно, не null
endDateExclusive - конечная дата, исключающая, не null
Возвращает:
период между этой датой и конечной датой, не null
См. также:
ChronoLocalDate.until(ChronoLocalDate)

get

public long get(TemporalUnit unit)

Получает значение запрошенной единицы.

Возвращает значение для каждой из трех поддерживаемых единиц, YEARS, MONTHS и DAYS. Все остальные единицы вызывают исключение.

Определено в:
get в интерфейсе ChronoPeriod
Определено в:
get в интерфейсе TemporalAmount
Параметры:
unit - TemporalUnit для которого нужно вернуть значение
Возвращает:
длинное значение единицы
Исключения:
DateTimeException - если единица не поддерживается
UnsupportedTemporalTypeException - если единица не поддерживается

getUnits

public List<TemporalUnit> getUnits()

Получает набор единиц, поддерживаемых этим периодом.

Поддерживаемые единицы - YEARS, MONTHS и DAYS. Они возвращаются в порядке годы, месяцы, дни.

Этот набор может быть использован вместе с get(TemporalUnit) для доступа ко всему состоянию периода.

Определено в:
getUnits в интерфейсе ChronoPeriod
Определено в:
getUnits в интерфейсе TemporalAmount
Возвращает:
список, содержащий единицы лет, месяцев и дней, не null

getChronology

public IsoChronology getChronology()

Получает хронологию этого периода, которая является системой календаря ISO.

Chronology представляет используемую систему календаря. Система календаря ISO-8601 - это современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором современные правила високосных годов применяются на протяжении всего времени.

Определено в:
getChronology в интерфейсе ChronoPeriod
Возвращает:
хронологию ISO, не null

isZero

public boolean isZero()

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

Нулевой период имеет значение ноль для единиц лет, месяцев и дней.

Определено в:
isZero в интерфейсе ChronoPeriod
Возвращает:
true, если этот период нулевой длины

isNegative

public boolean isNegative()

Проверяет, являются ли какие-либо из трех единиц этого периода отрицательными.

Проверяет, меньше ли единицы лет, месяцев или дней нуля.

Определено в:
isNegative в интерфейсе ChronoPeriod
Возвращает:
true, если какая-либо единица этого периода отрицательна

getYears

public int getYears()

Получает количество лет данного периода.

Возвращает единицу лет.

Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".

Возвращает:
количество лет этого периода, может быть отрицательным

getMonths

public int getMonths()

Получает количество месяцев данного периода.

Возвращает единицу месяцев.

Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".

Возвращает:
количество месяцев этого периода, может быть отрицательным

getDays

public int getDays()

Получает количество дней данного периода.

Возвращает единицу дней.

Возвращает:
количество дней этого периода, может быть отрицательным

withYears

public Period withYears(int years)

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

Устанавливает количество единиц лет в копии этого периода. Единицы месяцев и дней не затрагиваются.

Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Параметры:
years - годы для представления, могут быть отрицательными
Возвращает:
копию Period на основе этого периода с запрошенными годами, не null

withMonths

public Period withMonths(int months)

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

Это устанавливает количество единиц месяца в копии этого периода. Годы и дни не изменяются.

Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
months - количество месяцев для представления, может быть отрицательным
Возвращает:
период, основанный на этом периоде с запрошенными месяцами, не null

withDays

public Period withDays(int days)

Возвращает копию этого периода с указанным количеством дней.

Это устанавливает количество единиц дней в копии этого периода. Годы и месяцы не изменяются.

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
days - количество дней для представления, может быть отрицательным
Возвращает:
период, основанный на этом периоде с запрошенными днями, не null

plus

public Period plus(TemporalAmount amountToAdd)

Возвращает копию этого периода с добавленным указанным периодом.

Действует отдельно на годы, месяцы и дни. Нормализация не выполняется.

Например, "1 год, 6 месяцев и 3 дня" плюс "2 года, 2 месяца и 2 дня" возвращает "3 года, 8 месяцев и 5 дней".

Указанное количество обычно является экземпляром Period. Другие типы интерпретируются с помощью from(TemporalAmount).

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Задано:
plus в интерфейсе ChronoPeriod
Параметры:
amountToAdd - количество для добавления, не null
Возвращает:
период, основанный на этом периоде с добавленным периодом, не null
Исключения:
DateTimeException - если указанное количество имеет не-ISO хронологию или содержит недействительную единицу
ArithmeticException - если происходит переполнение числовых значений

plusYears

public Period plusYears(long yearsToAdd)

Возвращает копию этого периода с добавленными указанными годами.

Это добавляет значение к единице лет в копии этого периода. Месяцы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 года возвращает "3 года, 6 месяцев и 3 дня".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
yearsToAdd - количество лет для добавления, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с добавленными годами, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

plusMonths

public Period plusMonths(long monthsToAdd)

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

Это добавляет значение к единице месяцев в копии этого периода. Годы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 месяца возвращает "1 год, 8 месяцев и 3 дня".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
monthsToAdd - количество месяцев для добавления, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с добавленными месяцами, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

plusDays

public Period plusDays(long daysToAdd)

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

Это добавляет значение к единице дней в копии этого периода. Годы и месяцы не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 дня возвращает "1 год, 6 месяцев и 5 дней".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
daysToAdd - количество дней для добавления, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с добавленными днями, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

minus

public Period minus(TemporalAmount amountToSubtract)

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

Действует отдельно на годы, месяцы и дни. Нормализация не выполняется.

Например, "1 год, 6 месяцев и 3 дня" минус "2 года, 2 месяца и 2 дня" возвращает "-1 год, 4 месяца и 1 день".

Указанное количество обычно является экземпляром Period. Другие типы интерпретируются с помощью from(TemporalAmount).

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Задано:
minus в интерфейсе ChronoPeriod
Параметры:
amountToSubtract - количество для вычитания, не null
Возвращает:
период, основанный на этом периоде с вычтенным периодом, не null
Исключения:
DateTimeException - если указанное количество имеет не-ISO хронологию или содержит недействительную единицу
ArithmeticException - если происходит переполнение числовых значений

minusYears

public Period minusYears(long yearsToSubtract)

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

Вычитает значение из единицы лет в копии этого периода. Месяцы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 года возвращает "-1 год, 6 месяцев и 3 дня".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
yearsToSubtract - количество лет для вычитания, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с вычтенными годами, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

minusMonths

public Period minusMonths(long monthsToSubtract)

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

Вычитает значение из единицы месяцев в копии этого периода. Годы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 месяца возвращает "1 год, 4 месяца и 3 дня".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
monthsToSubtract - количество лет для вычитания, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с вычтенными месяцами, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

minusDays

public Period minusDays(long daysToSubtract)

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

Вычитает значение из единицы дней в копии этого периода. Годы и месяцы не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 дня возвращает "1 год, 6 месяцев и 1 день".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Параметры:
daysToSubtract - количество месяцев для вычитания, положительное или отрицательное
Возвращает:
период, основанный на этом периоде с вычтенными днями, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

multipliedBy

public Period multipliedBy(int scalar)

Возвращает новый экземпляр с каждым элементом в этом периоде, умноженным на указанный скаляр.

Это возвращает период, в котором каждый из единиц лет, месяцев и дней умножается индивидуально. Например, период "2 года, -3 месяца и 4 дня", умноженный на 3, вернёт "6 лет, -9 месяцев и 12 дней". Нормализация не выполняется.

Задано:
multipliedBy в интерфейсе ChronoPeriod
Параметры:
scalar - скаляр для умножения, не null
Возвращает:
период, основанный на этом периоде с умноженными величинами на скаляр, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

negated

public Period negated()

Возвращает новый экземпляр с каждым значением в этом периоде, сменённым на противоположное.

Это возвращает период, в котором каждое из единиц лет, месяцев и дней индивидуально меняет знак. Например, период "2 года, -3 месяца и 4 дня" станет "-2 года, 3 месяца и -4 дня". Нормализация не выполняется.

Задано:
negated в интерфейсе ChronoPeriod
Возвращает:
период, основанный на этом периоде со значениями, сменёнными на противоположное, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений, что происходит только если одно из единиц имеет значение Long.MIN_VALUE

normalized

public Period normalized()

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

Это нормализует единицы лет и месяцев, оставив единицу дней без изменений. Единица месяцев корректируется для того, чтобы иметь абсолютное значение меньше 12, а единица лет корректируется соответственно. Например, период "1 год и 15 месяцев" будет нормализован в "2 года и 3 месяца".

Знак единиц лет и месяцев будет одинаковым после нормализации. Например, период "1 год и -25 месяцев" будет нормализован в "-1 год и -1 месяц".

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Задано:
normalized в интерфейсе ChronoPeriod
Возвращает:
период, основанный на этом периоде с избыточными месяцами, нормализованными в годы, не null
Исключения:
ArithmeticException - если происходит переполнение числовых значений

toTotalMonths

public long toTotalMonths()

Получает общее количество месяцев в этом периоде.

Это возвращает общее количество месяцев в периоде, умножив количество лет на 12 и добавив количество месяцев.

Этот экземпляр неизменяем и не изменяется этим вызовом метода.

Возвращает:
общее количество месяцев в периоде, может быть отрицательным

addTo

public Temporal addTo(Temporal temporal)

Добавляет этот период к указанному временному объекту.

Возвращает временной объект того же типа, что и входной, с добавленным периодом. Если временной объект имеет хронологию, она должна быть ISO-хронологией.

В большинстве случаев обращение к методу с использованием Temporal.plus(TemporalAmount) более ясно.

// these two lines are equivalent, but the second approach is recommended
   dateTime = thisPeriod.addTo(dateTime);
   dateTime = dateTime.plus(thisPeriod);

Вычисление выполняется следующим образом. Сначала проверяется хронология временного объекта, чтобы убедиться, что это ISO-хронология или null. Во-вторых, если месяцы равны нулю, добавляются годы, если они не равны нулю, в противном случае добавляется комбинация лет и месяцев, если она не равна нулю. Наконец, добавляются любые дни.

Этот подход гарантирует, что частичный период может быть добавлен к частичной дате. Например, период из лет и/или месяцев может быть добавлен к YearMonth, но период, включающий дни, не может. Этот подход также добавляет годы и месяцы вместе при необходимости, что обеспечивает правильное поведение в конце месяца.

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Определено в:
addTo в интерфейсе ChronoPeriod
Определено в:
addTo в интерфейсе TemporalAmount
Параметры:
temporal - временной объект для корректировки, не null
Возвращает:
объект того же типа с выполненной корректировкой, не null
Исключения:
DateTimeException - если добавление невозможно
ArithmeticException - если происходит переполнение числового типа

subtractFrom

public Temporal subtractFrom(Temporal temporal)

Вычитает этот период из указанного временного объекта.

Возвращает временной объект того же типа, что и входной, с вычтенным периодом. Если временной объект имеет хронологию, она должна быть ISO-хронологией.

В большинстве случаев обращение к методу с использованием Temporal.minus(TemporalAmount) более ясно.

// these two lines are equivalent, but the second approach is recommended
   dateTime = thisPeriod.subtractFrom(dateTime);
   dateTime = dateTime.minus(thisPeriod);

Вычисление выполняется следующим образом. Сначала проверяется хронология временного объекта, чтобы убедиться, что это ISO-хронология или null. Во-вторых, если месяцы равны нулю, вычитаются годы, если они не равны нулю, в противном случае вычитается комбинация лет и месяцев, если она не равна нулю. Наконец, вычитаются любые дни.

Этот подход гарантирует, что частичный период может быть вычтен из частичной даты. Например, период из лет и/или месяцев может быть вычтен из YearMonth, но период, включающий дни, не может. Этот подход также вычитает годы и месяцы вместе при необходимости, что обеспечивает правильное поведение в конце месяца.

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Определено в:
subtractFrom в интерфейсе ChronoPeriod
Определено в:
subtractFrom в интерфейсе TemporalAmount
Параметры:
temporal - временной объект для корректировки, не null
Возвращает:
объект того же типа с выполненной корректировкой, не null
Исключения:
DateTimeException - если вычитание невозможно
ArithmeticException - если происходит переполнение числового типа

equals

public boolean equals(Object obj)

Проверяет, равен ли этот период другому периоду.

Сравнение основано на типе Period и каждом из трех значений. Для равенства годы, месяцы и дни должны быть индивидуально равны. Обратите внимание, что это означает, что период "15 месяцев" не равен периоду "1 год и 3 месяца".

Определено в:
equals в интерфейсе ChronoPeriod
Переопределяет:
equals в классе Object
Параметры:
obj - объект для проверки, null возвращает false
Возвращает:
true, если этот период равен другому периоду
См. также:
Object.hashCode(), HashMap

hashCode

public int hashCode()

Хеш-код для этого периода.

Определено в:
hashCode в интерфейсе ChronoPeriod
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хеш-код
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

Выводит этот период в виде String, например P6Y3M1D.

Вывод будет в формате периода ISO-8601. Период с нулевыми значениями будет представлен как нуль дней, 'P0D'.

Определено в:
toString в интерфейсе ChronoPeriod
Переопределяет:
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/Period.html

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