Класс 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 — современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором современные правила високосных лет применяются ко всем временам.
Период моделируется как направленное количество времени, что означает, что отдельные части периода могут быть отрицательными.
Это безусловный класс; использование операций, чувствительных к идентичности (включая равенство ссылок (==), хэш-код идентичности или синхронизацию) на экземплярах 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() | Возвращает новый экземпляр, в котором каждое значение в этом периоде отрицается. |
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 Поля
ZERO
public static final Period ZERO
Константа для периода ноль.
Методы
ofYears
public static Period ofYears(int years)
Получает Period , представляющий количество лет.
Результирующий период будет содержать указанное количество лет. Единицы месяцев и дней будут равны нулю.
- Параметры:
-
years- количество лет, положительное или отрицательное - Возвращает:
- период лет, не null
ofMonths
public static Period ofMonths(int months)
Получает Period , представляющий количество месяцев.
Результирующий период будет содержать указанное количество месяцев. Единицы лет и дней будут равны нулю.
- Параметры:
-
months- количество месяцев, положительное или отрицательное - Возвращает:
- период месяцев, не null
ofWeeks
public static Period ofWeeks(int weeks)
Получает Period , представляющий количество недель.
Результирующий период будет основан на днях, с количеством дней, равным количеству недель, умноженному на 7. Единицы лет и месяцев будут равны нулю.
- Параметры:
-
weeks- количество недель, положительное или отрицательное - Возвращает:
- период, с введенными неделями, преобразованными в дни, не null
ofDays
public static Period ofDays(int days)
Получает Period , представляющий количество дней.
Результирующий период будет содержать указанное количество дней. Единицы лет и месяцев будут равны нулю.
- Параметры:
-
days- количество дней, положительное или отрицательное - Возвращает:
- период дней, не null
of
public static Period of(int years,
int months,
int days) Получает Period , представляющий количество лет, месяцев и дней.
Создает экземпляр на основе лет, месяцев и дней.
- Параметры:
-
years- количество лет, может быть отрицательным -
months- количество месяцев, может быть отрицательным -
days- количество дней, может быть отрицательным - Возвращает:
- период лет, месяцев и дней, не null
from
public static Period from(TemporalAmount amount)
Получает экземпляр Period из временного количества.
Получает период на основе указанного количества. TemporalAmount представляет количество времени, которое может быть основано на дате или времени, которое эта фабрика извлекает в Period.
Преобразование циклически перебирает набор единиц из количества и использует единицы YEARS, MONTHS и DAYS для создания периода. Если будут найдены другие единицы, то будет выброшено исключение.
Если количество является ChronoPeriod , то оно должно использовать хронологию ISO.
- Параметры:
-
amount- временное количество для преобразования, не null - Возвращает:
- эквивалентный период, не null
- Исключения:
-
DateTimeException- если невозможно преобразовать вPeriod -
ArithmeticException- если количество лет, месяцев или дней превышает int
parse
public static Period parse(CharSequence text)
Получает Period из текстовой строки, например PnYnMnD.
Это позволит разобрать строку, полученную из toString(), которая основана на форматах периода ISO-8601 PnYnMnD и PnW.
Строка начинается с необязательного знака, обозначенного ASCII отрицательным или положительным символом. Если отрицательный, весь период инвертируется. Следующая буква ASCII - "P" в верхнем или нижнем регистре. Затем четыре раздела, каждый из которых состоит из числа и суффикса. По крайней мере один из четырех разделов должен быть присутствующим. Разделы имеют ASCII-суффиксы "Y", "M", "W" и "D" для лет, месяцев, недель и дней, принимаются в верхнем или нижнем регистре. Суффиксы должны следовать в порядке. Часть числа каждого раздела должна состоять из ASCII цифр. Число может быть предварено ASCII отрицательным или положительным символом. Число должно быть преобразовано в int.
Ведущий знак плюс/минус и отрицательные значения для других единиц не входят в стандарт ISO-8601. Кроме того, ISO-8601 не допускает смешивания между форматами PnYnMnD и PnW. Любые входные данные, основанные на неделях, умножаются на 7 и рассматриваются как количество дней.
Например, следующие являются допустимыми входами:
"P2Y" -- Period.ofYears(2) "P3M" -- Period.ofMonths(3) "P4W" -- Period.ofWeeks(4) "P5D" -- Period.ofDays(5) "P1Y2M3D" -- Period.of(1, 2, 3) "P1Y2M3W4D" -- Period.of(1, 2, 25) "P-1Y2M" -- Period.of(-1, 2, 0) "-P1Y2M" -- Period.of(-1, -2, 0)
- Параметры:
-
text- текст для разбора, не null - Возвращает:
- распарсенный период, не null
- Исключения:
-
DateTimeParseException- если текст не может быть распарсен в период
between
public static Period between(LocalDate startDateInclusive,
LocalDate endDateExclusive) Получает Period , состоящий из количества лет, месяцев и дней между двумя датами.
Начальная дата включена, но конечная дата не включена. Период вычисляется путем удаления полных месяцев, а затем вычисления оставшегося числа дней, корректируя, чтобы обеспечить одинаковый знак у обоих. Количество месяцев затем разбивается на годы и месяцы на основе 12-месячного года. Месяц считается, если конечный день месяца больше или равен начальному дню месяца. Например, от 2010-01-15 до 2011-03-18 составляет один год, два месяца и три дня.
Результат этого метода может быть отрицательным периодом, если конец предшествует началу. Отрицательный знак будет одинаковым для года, месяца и дня.
- Параметры:
-
startDateInclusive- начальная дата, включительно, не null -
endDateExclusive- конечная дата, исключающая, не null - Возвращает:
- период между этой датой и конечной датой, не null
- См. также:
ChronoLocalDate.until(ChronoLocalDate)
get
public long get(TemporalUnit unit)
Получает значение запрошенной единицы.
Возвращает значение для каждой из трех поддерживаемых единиц, YEARS, MONTHS и DAYS. Все остальные единицы вызывают исключение.
- Определено в:
-
getв интерфейсеChronoPeriod - Определено в:
-
getв интерфейсеTemporalAmount - Параметры:
-
unit-TemporalUnitдля которого нужно вернуть значение - Возвращает:
- длинное значение единицы
- Исключения:
-
DateTimeException- если единица не поддерживается -
UnsupportedTemporalTypeException- если единица не поддерживается
getUnits
public List<TemporalUnit> getUnits()
Получает набор единиц, поддерживаемых этим периодом.
Поддерживаемые единицы - YEARS, MONTHS и DAYS. Они возвращаются в порядке годы, месяцы, дни.
Этот набор может быть использован вместе с get(TemporalUnit) для доступа ко всему состоянию периода.
- Определено в:
-
getUnitsв интерфейсеChronoPeriod - Определено в:
-
getUnitsв интерфейсеTemporalAmount - Возвращает:
- список, содержащий единицы лет, месяцев и дней, не null
getChronology
public IsoChronology getChronology()
Получает хронологию этого периода, которая является системой календаря ISO.
Chronology представляет используемую систему календаря. Система календаря ISO-8601 - это современная гражданская система календаря, используемая сегодня в большинстве стран мира. Она эквивалентна пролептическому григорианскому календарю, в котором современные правила високосных годов применяются на протяжении всего времени.
- Определено в:
-
getChronologyв интерфейсеChronoPeriod - Возвращает:
- хронологию ISO, не null
isZero
public boolean isZero()
Проверяет, равны ли все три единицы этого периода нулю.
Нулевой период имеет значение ноль для единиц лет, месяцев и дней.
- Определено в:
-
isZeroв интерфейсеChronoPeriod - Возвращает:
- true, если этот период нулевой длины
isNegative
public boolean isNegative()
Проверяет, являются ли какие-либо из трех единиц этого периода отрицательными.
Проверяет, меньше ли единицы лет, месяцев или дней нуля.
- Определено в:
-
isNegativeв интерфейсеChronoPeriod - Возвращает:
- true, если какая-либо единица этого периода отрицательна
getYears
public int getYears()
Получает количество лет данного периода.
Возвращает единицу лет.
Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".
- Возвращает:
- количество лет этого периода, может быть отрицательным
getMonths
public int getMonths()
Получает количество месяцев данного периода.
Возвращает единицу месяцев.
Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".
- Возвращает:
- количество месяцев этого периода, может быть отрицательным
getDays
public int getDays()
Получает количество дней данного периода.
Возвращает единицу дней.
- Возвращает:
- количество дней этого периода, может быть отрицательным
withYears
public Period withYears(int years)
Возвращает копию этого периода с указанным количеством лет.
Устанавливает количество единиц лет в копии этого периода. Единицы месяцев и дней не затрагиваются.
Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Параметры:
-
years- годы для представления, могут быть отрицательными - Возвращает:
- копию
Periodна основе этого периода с запрошенными годами, не null
withMonths
public Period withMonths(int months)
Возвращает копию этого периода с указанным количеством месяцев.
Это устанавливает количество единиц месяца в копии этого периода. Годы и дни не изменяются.
Единица месяцев не нормализуется автоматически с единицей лет. Это означает, что период "15 месяцев" отличается от периода "1 год и 3 месяца".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
months- количество месяцев для представления, может быть отрицательным - Возвращает:
- период, основанный на этом периоде с запрошенными месяцами, не null
withDays
public Period withDays(int days)
Возвращает копию этого периода с указанным количеством дней.
Это устанавливает количество единиц дней в копии этого периода. Годы и месяцы не изменяются.
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
days- количество дней для представления, может быть отрицательным - Возвращает:
- период, основанный на этом периоде с запрошенными днями, не null
plus
public Period plus(TemporalAmount amountToAdd)
Возвращает копию этого периода с добавленным указанным периодом.
Действует отдельно на годы, месяцы и дни. Нормализация не выполняется.
Например, "1 год, 6 месяцев и 3 дня" плюс "2 года, 2 месяца и 2 дня" возвращает "3 года, 8 месяцев и 5 дней".
Указанное количество обычно является экземпляром Period. Другие типы интерпретируются с помощью from(TemporalAmount).
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Задано:
-
plusв интерфейсеChronoPeriod - Параметры:
-
amountToAdd- количество для добавления, не null - Возвращает:
- период, основанный на этом периоде с добавленным периодом, не null
- Исключения:
-
DateTimeException- если указанное количество имеет не-ISO хронологию или содержит недействительную единицу -
ArithmeticException- если происходит переполнение числовых значений
plusYears
public Period plusYears(long yearsToAdd)
Возвращает копию этого периода с добавленными указанными годами.
Это добавляет значение к единице лет в копии этого периода. Месяцы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 года возвращает "3 года, 6 месяцев и 3 дня".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
yearsToAdd- количество лет для добавления, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с добавленными годами, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
plusMonths
public Period plusMonths(long monthsToAdd)
Возвращает копию этого периода с добавленными указанными месяцами.
Это добавляет значение к единице месяцев в копии этого периода. Годы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 месяца возвращает "1 год, 8 месяцев и 3 дня".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
monthsToAdd- количество месяцев для добавления, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с добавленными месяцами, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
plusDays
public Period plusDays(long daysToAdd)
Возвращает копию этого периода с добавленными указанными днями.
Это добавляет значение к единице дней в копии этого периода. Годы и месяцы не изменяются. Например, "1 год, 6 месяцев и 3 дня" плюс 2 дня возвращает "1 год, 6 месяцев и 5 дней".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
daysToAdd- количество дней для добавления, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с добавленными днями, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
minus
public Period minus(TemporalAmount amountToSubtract)
Возвращает копию этого периода с вычтенным указанным периодом.
Действует отдельно на годы, месяцы и дни. Нормализация не выполняется.
Например, "1 год, 6 месяцев и 3 дня" минус "2 года, 2 месяца и 2 дня" возвращает "-1 год, 4 месяца и 1 день".
Указанное количество обычно является экземпляром Period. Другие типы интерпретируются с помощью from(TemporalAmount).
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Задано:
-
minusв интерфейсеChronoPeriod - Параметры:
-
amountToSubtract- количество для вычитания, не null - Возвращает:
- период, основанный на этом периоде с вычтенным периодом, не null
- Исключения:
-
DateTimeException- если указанное количество имеет не-ISO хронологию или содержит недействительную единицу -
ArithmeticException- если происходит переполнение числовых значений
minusYears
public Period minusYears(long yearsToSubtract)
Возвращает копию этого периода с вычтенными указанными годами.
Вычитает значение из единицы лет в копии этого периода. Месяцы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 года возвращает "-1 год, 6 месяцев и 3 дня".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
yearsToSubtract- количество лет для вычитания, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с вычтенными годами, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
minusMonths
public Period minusMonths(long monthsToSubtract)
Возвращает копию этого периода с вычтенными указанными месяцами.
Вычитает значение из единицы месяцев в копии этого периода. Годы и дни не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 месяца возвращает "1 год, 4 месяца и 3 дня".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
monthsToSubtract- количество лет для вычитания, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с вычтенными месяцами, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
minusDays
public Period minusDays(long daysToSubtract)
Возвращает копию этого периода с вычтенными указанными днями.
Вычитает значение из единицы дней в копии этого периода. Годы и месяцы не изменяются. Например, "1 год, 6 месяцев и 3 дня" минус 2 дня возвращает "1 год, 6 месяцев и 1 день".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Параметры:
-
daysToSubtract- количество месяцев для вычитания, положительное или отрицательное - Возвращает:
- период, основанный на этом периоде с вычтенными днями, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
multipliedBy
public Period multipliedBy(int scalar)
Возвращает новый экземпляр с каждым элементом в этом периоде, умноженным на указанный скаляр.
Это возвращает период, в котором каждый из единиц лет, месяцев и дней умножается индивидуально. Например, период "2 года, -3 месяца и 4 дня", умноженный на 3, вернёт "6 лет, -9 месяцев и 12 дней". Нормализация не выполняется.
- Задано:
-
multipliedByв интерфейсеChronoPeriod - Параметры:
-
scalar- скаляр для умножения, не null - Возвращает:
- период, основанный на этом периоде с умноженными величинами на скаляр, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
negated
public Period negated()
Возвращает новый экземпляр с каждым значением в этом периоде, сменённым на противоположное.
Это возвращает период, в котором каждое из единиц лет, месяцев и дней индивидуально меняет знак. Например, период "2 года, -3 месяца и 4 дня" станет "-2 года, 3 месяца и -4 дня". Нормализация не выполняется.
- Задано:
-
negatedв интерфейсеChronoPeriod - Возвращает:
- период, основанный на этом периоде со значениями, сменёнными на противоположное, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений, что происходит только если одно из единиц имеет значениеLong.MIN_VALUE
normalized
public Period normalized()
Возвращает копию этого периода с нормализованными годами и месяцами.
Это нормализует единицы лет и месяцев, оставив единицу дней без изменений. Единица месяцев корректируется для того, чтобы иметь абсолютное значение меньше 12, а единица лет корректируется соответственно. Например, период "1 год и 15 месяцев" будет нормализован в "2 года и 3 месяца".
Знак единиц лет и месяцев будет одинаковым после нормализации. Например, период "1 год и -25 месяцев" будет нормализован в "-1 год и -1 месяц".
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Задано:
-
normalizedв интерфейсеChronoPeriod - Возвращает:
- период, основанный на этом периоде с избыточными месяцами, нормализованными в годы, не null
- Исключения:
-
ArithmeticException- если происходит переполнение числовых значений
toTotalMonths
public long toTotalMonths()
Получает общее количество месяцев в этом периоде.
Это возвращает общее количество месяцев в периоде, умножив количество лет на 12 и добавив количество месяцев.
Этот экземпляр неизменяем и не изменяется этим вызовом метода.
- Возвращает:
- общее количество месяцев в периоде, может быть отрицательным
addTo
public Temporal addTo(Temporal temporal)
Добавляет этот период к указанному временному объекту.
Возвращает временной объект того же типа, что и входной, с добавленным периодом. Если временной объект имеет хронологию, она должна быть ISO-хронологией.
В большинстве случаев обращение к методу с использованием Temporal.plus(TemporalAmount) более ясно.
// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.addTo(dateTime); dateTime = dateTime.plus(thisPeriod);
Вычисление выполняется следующим образом. Сначала проверяется хронология временного объекта, чтобы убедиться, что это ISO-хронология или null. Во-вторых, если месяцы равны нулю, добавляются годы, если они не равны нулю, в противном случае добавляется комбинация лет и месяцев, если она не равна нулю. Наконец, добавляются любые дни.
Этот подход гарантирует, что частичный период может быть добавлен к частичной дате. Например, период из лет и/или месяцев может быть добавлен к YearMonth, но период, включающий дни, не может. Этот подход также добавляет годы и месяцы вместе при необходимости, что обеспечивает правильное поведение в конце месяца.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Определено в:
-
addToв интерфейсеChronoPeriod - Определено в:
-
addToв интерфейсеTemporalAmount - Параметры:
-
temporal- временной объект для корректировки, не null - Возвращает:
- объект того же типа с выполненной корректировкой, не null
- Исключения:
-
DateTimeException- если добавление невозможно -
ArithmeticException- если происходит переполнение числового типа
subtractFrom
public Temporal subtractFrom(Temporal temporal)
Вычитает этот период из указанного временного объекта.
Возвращает временной объект того же типа, что и входной, с вычтенным периодом. Если временной объект имеет хронологию, она должна быть ISO-хронологией.
В большинстве случаев обращение к методу с использованием Temporal.minus(TemporalAmount) более ясно.
// these two lines are equivalent, but the second approach is recommended dateTime = thisPeriod.subtractFrom(dateTime); dateTime = dateTime.minus(thisPeriod);
Вычисление выполняется следующим образом. Сначала проверяется хронология временного объекта, чтобы убедиться, что это ISO-хронология или null. Во-вторых, если месяцы равны нулю, вычитаются годы, если они не равны нулю, в противном случае вычитается комбинация лет и месяцев, если она не равна нулю. Наконец, вычитаются любые дни.
Этот подход гарантирует, что частичный период может быть вычтен из частичной даты. Например, период из лет и/или месяцев может быть вычтен из YearMonth, но период, включающий дни, не может. Этот подход также вычитает годы и месяцы вместе при необходимости, что обеспечивает правильное поведение в конце месяца.
Этот экземпляр неизменяем и не затрагивается этим вызовом метода.
- Определено в:
-
subtractFromв интерфейсеChronoPeriod - Определено в:
-
subtractFromв интерфейсеTemporalAmount - Параметры:
-
temporal- временной объект для корректировки, не null - Возвращает:
- объект того же типа с выполненной корректировкой, не null
- Исключения:
-
DateTimeException- если вычитание невозможно -
ArithmeticException- если происходит переполнение числового типа
equals
public boolean equals(Object obj)
Проверяет, равен ли этот период другому периоду.
Сравнение основано на типе Period и каждом из трех значений. Для равенства годы, месяцы и дни должны быть индивидуально равны. Обратите внимание, что это означает, что период "15 месяцев" не равен периоду "1 год и 3 месяца".
- Определено в:
-
equalsв интерфейсеChronoPeriod - Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект для проверки, null возвращает false - Возвращает:
- true, если этот период равен другому периоду
- См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Хеш-код для этого периода.
- Определено в:
-
hashCodeв интерфейсеChronoPeriod - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хеш-код
- См. также:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
toString
public String toString()
Выводит этот период в виде String, например P6Y3M1D.
Вывод будет в формате периода ISO-8601. Период с нулевыми значениями будет представлен как нуль дней, 'P0D'.
- Определено в:
-
toStringв интерфейсеChronoPeriod - Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого периода, не null
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/Period.html