Класс Period
- Все реализуемые интерфейсы:
Serializable, ChronoPeriod, TemporalAmount
public final class Period extends Object implements ChronoPeriod, Serializable
Этот класс описывает количество времени в годах, месяцах и днях. Эквивалент этого класса для выражения времени в единицах времени см. в Duration.
Периоды и длительности по-разному учитывают переход на летнее время при добавлении к ZonedDateTime. Duration добавляет точное количество секунд, поэтому длительность в один день всегда равна ровно 24 часам. Напротив, Period добавляет условный день, стараясь сохранить местное время.
Например, рассмотрим добавление периода в один день и длительности в один день к 18:00 вечером перед переходом на летнее время. Period добавит условный день, и в результате получится ZonedDateTime в 18:00 следующего дня. Напротив, Duration добавит ровно 24 часа, в результате чего получится ZonedDateTime в 19:00 следующего дня (при условии, что переход на летнее время составляет один час).
Поддерживаемые единицы периода: YEARS, MONTHS и DAYS. Все три поля всегда присутствуют, но их значения могут быть равны нулю.
Календарная система ISO-8601 — это современная гражданская календарная система, используемая сегодня в большинстве стран мира. Она эквивалентна пролептической григорианской календарной системе, в которой действующие сегодня правила високосных лет применяются ко всем временам.
Период моделируется как направленный промежуток времени, то есть отдельные составляющие периода могут быть отрицательными.
Этот класс относится к классам, основанным на значениях; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать экземпляры для синхронизации, иначе возможно непредсказуемое поведение. Например, в будущей версии синхронизация может завершиться неудачей. Для сравнения следует использовать метод equals.
- Требования к реализации:
- Этот класс является неизменяемым и потокобезопасным.
- Появился в версии:
- 1.8
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final Period |
ZERO |
Константа, обозначающая период, равный нулю. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Temporal |
addTo |
Добавляет этот период к указанному временному объекту. |
static Period |
between |
Возвращает Period, состоящий из количества лет, месяцев и дней между двумя датами. |
boolean |
equals |
Проверяет, равен ли этот период другому периоду. |
static Period |
from |
Создает экземпляр Period из временной величины. |
long |
get |
Возвращает значение запрошенной единицы. |
IsoChronology |
getChronology() |
Возвращает хронологию этого периода, то есть календарную систему ISO. |
int |
getDays() |
Возвращает количество дней в этом периоде. |
int |
getMonths() |
Возвращает количество месяцев в этом периоде. |
List |
getUnits() |
Возвращает набор единиц, поддерживаемых этим периодом. |
int |
getYears() |
Возвращает количество лет в этом периоде. |
int |
hashCode() |
Хеш-код этого периода. |
boolean |
isNegative() |
Проверяет, является ли отрицательной хотя бы одна из трех единиц этого периода. |
boolean |
isZero() |
Проверяет, равны ли нулю все три единицы этого периода. |
Period |
minus |
Возвращает копию этого периода, из которой вычтен указанный период. |
Period |
minusDays |
Возвращает копию этого периода, из которой вычтено указанное количество дней. |
Period |
minusMonths |
Возвращает копию этого периода, из которой вычтено указанное количество месяцев. |
Period |
minusYears |
Возвращает копию этого периода, из которой вычтено указанное количество лет. |
Period |
multipliedBy |
Возвращает новый экземпляр, в котором каждая составляющая этого периода умножена на указанный скаляр. |
Period |
negated() |
Возвращает новый экземпляр, в котором знак каждой величины этого периода изменен на противоположный. |
Period |
normalized() |
Возвращает копию этого периода с нормализованными годами и месяцами. |
static Period |
of |
Возвращает Period, представляющий количество лет, месяцев и дней. |
static Period |
ofDays |
Возвращает Period, представляющий количество дней. |
static Period |
ofMonths |
Возвращает Period, представляющий количество месяцев. |
static Period |
ofWeeks |
Возвращает Period, представляющий количество недель. |
static Period |
ofYears |
Возвращает Period, представляющий количество лет. |
static Period |
parse |
Создает Period из текстовой строки, например PnYnMnD. |
Period |
plus |
Возвращает копию этого периода, к которой добавлен указанный период. |
Period |
plusDays |
Возвращает копию этого периода, к которой добавлено указанное количество дней. |
Period |
plusMonths |
Возвращает копию этого периода, к которой добавлено указанное количество месяцев. |
Period |
plusYears |
Возвращает копию этого периода, к которой добавлено указанное количество лет. |
Temporal |
subtractFrom |
Вычитает этот период из указанного временного объекта. |
String |
toString() |
Представляет этот период в виде String, например P6Y3M1D. |
long |
toTotalMonths() |
Возвращает общее количество месяцев в этом периоде. |
Period |
withDays |
Возвращает копию этого периода с указанным количеством дней. |
Period |
withMonths |
Возвращает копию этого периода с указанным количеством месяцев. |
Period |
withYears |
Возвращает копию этого периода с указанным количеством лет. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело и подлежит удалению: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и подлежит удалению в будущем выпуске. |
final Class |
getClass() |
Возвращает класс среды выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного интервала реального времени. |
Подробное описание полей
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
- См. также:
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()
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— представляемое количество месяцев, может быть отрицательным - Возвращает:
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)
Операция выполняется отдельно для лет, месяцев и дней. Нормализация не производится.
Например, при вычитании «2 года, 2 месяца и 2 дня» из «1 года, 6 месяцев и 3 дней» получается «-1 год, 4 месяца и 1 день».
Указанная величина обычно является экземпляром Period. Другие типы интерпретируются с помощью from(TemporalAmount).
Этот экземпляр является неизменяемым и не изменяется при вызове данного метода.
- Определено в:
-
minusв интерфейсеChronoPeriod - Параметры:
-
amountToSubtract— вычитаемая величина, не null - Возвращает:
Periodна основе этого периода с вычтенным запрошенным периодом, не null- Исключения:
-
DateTimeException— если указанная величина имеет календарную систему, отличную от ISO, или содержит недопустимую единицу -
ArithmeticException— при числовом переполнении
minusYears
public Period minusYears(long yearsToSubtract)
Вычитает указанное количество из единицы лет в копии этого периода. Единицы месяцев и дней не изменяются. Например, при вычитании 2 лет из «1 года, 6 месяцев и 3 дней» получается «-1 год, 6 месяцев и 3 дня».
Этот экземпляр является неизменяемым и не изменяется при вызове данного метода.
- Параметры:
-
yearsToSubtract— количество вычитаемых лет, положительное или отрицательное - Возвращает:
Periodна основе этого периода с вычтенным указанным количеством лет, не null- Исключения:
-
ArithmeticException— при числовом переполнении
minusMonths
public Period minusMonths(long monthsToSubtract)
Вычитает указанное количество из единицы месяцев в копии этого периода. Единицы лет и дней не изменяются. Например, при вычитании 2 месяцев из «1 года, 6 месяцев и 3 дней» получается «1 год, 4 месяца и 3 дня».
Этот экземпляр является неизменяемым и не изменяется при вызове данного метода.
- Параметры:
-
monthsToSubtract— количество вычитаемых лет, положительное или отрицательное - Возвращает:
Periodна основе этого периода с вычтенным указанным количеством месяцев, не null- Исключения:
-
ArithmeticException— при числовом переполнении
minusDays
public Period minusDays(long daysToSubtract)
Вычитает указанное количество из единицы дней в копии этого периода. Единицы лет и месяцев не изменяются. Например, при вычитании 2 дней из «1 года, 6 месяцев и 3 дней» получается «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 месяца».
Этот экземпляр является неизменяемым и не изменяется при вызове данного метода.
- Определено в:
-
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, если этот период равен другому
- См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв интерфейсеChronoPeriod - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- подходящий хеш-код
- См. также:
toString
public String toString()
String, например P6Y3M1D. Результат будет представлен в формате периода ISO-8601. Нулевой период будет представлен как ноль дней: «P0D».
- Указано в:
-
toStringв интерфейсеChronoPeriod - Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого периода; не может быть null
© 1993, 2025, 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.