Spec-Zone.ru › OpenJDK 8

Класс 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 следующего дня (при условии разрыва DST в один час).

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

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

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

Это класс value-based; использование операций, чувствительных к идентификатору (включая равенство ссылок (==), хэш-код идентификации или синхронизацию) на экземплярах 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()

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

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

Методы, унаследованные от интерфейса java.time.chrono.ChronoPeriod

between

Поля

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

normalized

public Period normalized()

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

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

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

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

Определено в:
normalized в интерфейсе ChronoPeriod
Возвращает:
объект Period на основе этого периода с избыточными месяцами, нормализованными к годам, не 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.

Spec-Zone.ru

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