Spec-Zone.ru › OpenJDK 17

Класс 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. Продолжительность добавит точное количество секунд, поэтому продолжительность одного дня всегда составляет ровно 24 часа. В свою очередь, период добавит понятие дня, пытаясь сохранить местное время.

Например, рассмотрим добавление периода в один день и продолжительности в один день к 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 для создания периода. При обнаружении других единиц выбрасывается исключение.

Если величина является временной величиной, то она должна использовать хронологию 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 - TemporalUnit для получения значения
Возвращает:
значение единицы типа long
Исключения:
DateTimeException - если единица не поддерживается
UnsupportedTemporalTypeException - если единица не поддерживается

getUnits

public List<TemporalUnit> getUnits()
Получает набор единиц, поддерживаемых этим периодом.

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

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

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

getChronology

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

Хронология представляет собой систему календаря, используемую. Система календаря 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 - количество месяцев для представления, может быть отрицательным
Возвращает:
копию Period на основе этого периода с запрошенным количеством месяцев, не null

withDays

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

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

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

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

plus

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

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

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

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

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

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

plusYears

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

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

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

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

plusMonths

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

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

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

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

plusDays

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

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

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

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

minus

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

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

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

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

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

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

minusYears

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

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

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

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

minusMonths

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

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

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

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

minusDays

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

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

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

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

multipliedBy

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

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

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

negated

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

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

Определено в:
negated в интерфейсе ChronoPeriod
Возвращает:
копию Period на основе этого периода с измененными значениями, не null
Исключения:
ArithmeticException - если произошел переполнение числовых значений, что происходит только если у одной из единиц есть значение Integer.MIN_VALUE

normalized

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

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

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

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

Specified by:
normalized в интерфейсе ChronoPeriod
Returns:
a Period на основе этого периода с избыточными месяцами, нормализованными в года, не null
Throws:
ArithmeticException - если происходит переполнение числовых значений

toTotalMonths

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

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

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

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

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, но период, включающий дни, не может. Подход также добавляет годы и месяцы вместе при необходимости, что гарантирует правильное поведение в конце месяца.

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

Specified by:
addTo в интерфейсе ChronoPeriod
Specified by:
addTo в интерфейсе TemporalAmount
Parameters:
temporal - временной объект для корректировки, не null
Returns:
объект того же типа с произведенной корректировкой, не null
Throws:
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, но период, включающий дни, не может. Подход также вычитает годы и месяцы вместе при необходимости, что гарантирует правильное поведение в конце месяца.

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

Specified by:
subtractFrom в интерфейсе ChronoPeriod
Specified by:
subtractFrom в интерфейсе TemporalAmount
Parameters:
temporal - временной объект для корректировки, не null
Returns:
объект того же типа с произведенной корректировкой, не null
Throws:
DateTimeException - если вычитание невозможно
ArithmeticException - если происходит переполнение числовых значений

equals

public boolean equals(Object obj)
Проверяет, равен ли этот период другому периоду.

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

Specified by:
equals в интерфейсе ChronoPeriod
Overrides:
equals в классе Object
Parameters:
obj - объект для проверки, null возвращает false
Returns:
true, если этот период равен другому периоду
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Хэш-код для этого периода.
Specified by:
hashCode в интерфейсе ChronoPeriod
Overrides:
hashCode в классе Object
Returns:
подходящий хэш-код
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

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

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

Specified by:
toString в интерфейсе ChronoPeriod
Overrides:
toString в классе Object
Returns:
строковое представление этого периода, не null

© 1993, 2021, 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/17/docs/api/java.base/java/time/Period.html

Spec-Zone.ru

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