Класс 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) Получает |
boolean |
equals(Object obj) Проверяет, равен ли этот период другому периоду. |
static Period |
from(TemporalAmount amount) Получает экземпляр |
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) Получает |
static Period |
ofDays(int days) Получает |
static Period |
ofMonths(int months) Получает |
static Period |
ofWeeks(int weeks) Получает |
static Period |
ofYears(int years) Получает |
static Period |
parse(CharSequence text) Получает |
Period |
plus(TemporalAmount amountToAdd) Возвращает копию этого периода, к которому добавлен указанный период. |
Period |
plusDays(long daysToAdd) Возвращает копию этого периода, к которому добавлены указанные дни. |
Period |
plusMonths(long monthsToAdd) Возвращает копию этого периода, к которому добавлены указанные месяцы. |
Period |
plusYears(long yearsToAdd) Возвращает копию этого периода, к которому добавлены указанные годы. |
Temporal |
subtractFrom(Temporal temporal) Вычитает этот период из указанного временного объекта. |
String |
toString() Выводит этот период как |
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.