Spec-Zone.ru › OpenJDK 21

Класс Period

java.lang.Object
java.time.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 следующего дня (при условии разрыва летнего времени в один час).

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

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

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

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

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

Краткое описание полей

Модификатор и тип Поле Описание
static final 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)
Получает период, представляющий количество лет.

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

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

ofMonths

public static Period ofMonths(int months)
Получает период, представляющий количество месяцев.

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

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

ofWeeks

public static Period ofWeeks(int weeks)
Получает период, представляющий количество недель.

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

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

ofDays

public static Period ofDays(int days)
Получает период, представляющий количество дней.

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

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

of

public static Period of(int years, int months, int days)
Получает период, представляющий количество лет, месяцев и дней.

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

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

from

public static Period from(TemporalAmount amount)
Получает экземпляр периода из временной величины.

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

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

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

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

parse

public static Period parse(CharSequence text)
Получает период из текстовой строки, например 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)
Получает период, представляющий количество лет, месяцев и дней между двумя датами.

Начальная дата включена, а конечная - нет. Период рассчитывается путём удаления полных месяцев, а затем вычисления оставшегося количества дней, корректируя, чтобы оба имели одинаковый знак. Количество месяцев затем разбивается на годы и месяцы на основе года в 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 - единица, для которой нужно вернуть значение
Возвращает:
длинное значение единицы
Исключения:
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()
Получает количество дней в данном периоде.

Возвращает значение для единиц дней.

Returns:
количество дней в данном периоде, может быть отрицательным

withYears

public Period withYears(int years)
Возвращает копию данного периода с указанным количеством лет.

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

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

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

Parameters:
years - количество лет для представления, может быть отрицательным
Returns:
копию Period на основе данного периода с запрошенными годами, не null

withMonths

public Period withMonths(int months)
Возвращает копию данного периода с указанным количеством месяцев.

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

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

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

Parameters:
months - количество месяцев для представления, может быть отрицательным
Returns:
копию Period на основе данного периода с запрошенными месяцами, не null

withDays

public Period withDays(int days)
Возвращает копию данного периода с указанным количеством дней.

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

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

Parameters:
days - количество дней для представления, может быть отрицательным
Returns:
копию Period на основе данного периода с запрошенными днями, не null

plus

public Period plus(TemporalAmount amountToAdd)
Возвращает копию данного периода с добавленным указанным периодом.

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

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

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

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

Specified by:
plus в интерфейсе ChronoPeriod
Parameters:
amountToAdd - добавляемое значение, не null
Returns:
копию Period на основе данного периода с добавленным периодом, не null
Throws:
DateTimeException - если указанное значение имеет не-ISO хронологию или содержит неверную единицу
ArithmeticException - если происходит переполнение числового значения

plusYears

public Period plusYears(long yearsToAdd)
Возвращает копию данного периода с добавленными указанными годами.

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

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

Parameters:
yearsToAdd - добавляемые годы, положительные или отрицательные
Returns:
копию Period на основе данного периода с добавленными годами, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

plusMonths

public Period plusMonths(long monthsToAdd)
Возвращает копию данного периода с добавленными указанными месяцами.

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

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

Parameters:
monthsToAdd - добавляемые месяцы, положительные или отрицательные
Returns:
копию Period на основе данного периода с добавленными месяцами, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

plusDays

public Period plusDays(long daysToAdd)
Возвращает копию данного периода с добавленными указанными днями.

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

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

Parameters:
daysToAdd - добавляемые дни, положительные или отрицательные
Returns:
копию Period на основе данного периода с добавленными днями, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

minus

public Period minus(TemporalAmount amountToSubtract)
Возвращает копию данного периода с вычтенным указанным периодом.

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

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

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

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

Specified by:
minus в интерфейсе ChronoPeriod
Parameters:
amountToSubtract - вычитаемое значение, не null
Returns:
копию Period на основе данного периода с вычтенным периодом, не null
Throws:
DateTimeException - если указанное значение имеет не-ISO хронологию или содержит неверную единицу
ArithmeticException - если происходит переполнение числового значения

minusYears

public Period minusYears(long yearsToSubtract)
Возвращает копию данного периода с вычтенными указанными годами.

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

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

Parameters:
yearsToSubtract - вычитаемые годы, положительные или отрицательные
Returns:
копию Period на основе данного периода с вычтенными годами, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

minusMonths

public Period minusMonths(long monthsToSubtract)
Возвращает копию данного периода с вычтенными указанными месяцами.

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

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

Parameters:
monthsToSubtract - вычитаемые месяцы, положительные или отрицательные
Returns:
копию Period на основе данного периода с вычтенными месяцами, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

minusDays

public Period minusDays(long daysToSubtract)
Возвращает копию данного периода с вычтенными указанными днями.

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

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

Parameters:
daysToSubtract - вычитаемые дни, положительные или отрицательные
Returns:
копию Period на основе данного периода с вычтенными днями, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

multipliedBy

public Period multipliedBy(int scalar)
Возвращает новый экземпляр с каждым элементом в данном периоде, умноженным на указанный скаляр.

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

Specified by:
multipliedBy в интерфейсе ChronoPeriod
Parameters:
scalar - скаляр для умножения, не null
Returns:
копию Period на основе данного периода с умноженными значениями, не null
Throws:
ArithmeticException - если происходит переполнение числового значения

negated

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

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

Specified by:
negated в интерфейсе ChronoPeriod
Returns:
копию Period на основе данного периода со значениями, измененными на противоположный знак, не null
Throws:
ArithmeticException - если происходит переполнение числового значения, что происходит только в том случае, если у одной из единиц есть значение Integer.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, 2023, 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/21/docs/api/java.base/java/time/Period.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API