Класс Instant
- Все реализованные интерфейсы:
Serializable, Comparable<Instant>, Temporal, TemporalAccessor, TemporalAdjuster
public final class Instant extends Object implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
Этот класс моделирует отдельный момент на временной шкале. Его можно использовать для записи временных меток событий в приложении.
Для хранения диапазона момента требуется число, превышающее long. Для этого класс хранит long, представляющее секунды эпохи, и int, представляющее наносекунды секунды; его значение всегда находится в диапазоне от 0 до 999,999,999. Секунды эпохи отсчитываются от стандартной эпохи Java — 1970-01-01T00:00:00Z: моменты после эпохи имеют положительные значения, а более ранние моменты — отрицательные. Для частей, представляющих секунды эпохи и наносекунды, большее значение всегда соответствует более позднему моменту на временной шкале, чем меньшее.
Шкала времени
Продолжительность солнечных суток — общепринятый способ измерения времени. Традиционно сутки делятся на 24 часа по 60 минут, а каждая минута — на 60 секунд; таким образом, в сутках 86 400 секунд.
Современный отсчет времени основан на атомных часах, которые точно определяют секунду СИ относительно переходов атома цезия. Продолжительность секунды СИ была определена как очень близкая к 1/86 400 суток.
К сожалению, из-за вращения Земли продолжительность суток меняется. Кроме того, со временем средняя продолжительность суток увеличивается, поскольку вращение Земли замедляется. В результате солнечные сутки в 2012 году немного длиннее 86 400 секунд СИ. Фактическую продолжительность конкретных суток и скорость замедления вращения Земли невозможно предсказать — их можно определить только путем измерений. Шкала времени UT1 точно отражает продолжительность суток, но становится доступна лишь через некоторое время после их окончания.
Шкала времени UTC — это стандартный способ объединить все дополнительные доли секунды, возникающие в UT1, в целые секунды, называемые високосными секундами. В зависимости от изменений вращения Земли високосная секунда может быть добавлена или удалена. Поэтому при необходимости UTC допускает, чтобы в сутках было 86 399 или 86 401 секунда СИ, чтобы сохранить соответствие суток движению Солнца.
Современная шкала времени UTC была введена в 1972 году вместе с понятием целых високосных секунд. В период с 1958 по 1972 год определение UTC было сложным и включало небольшие високосные поправки меньше секунды и изменения продолжительности условной секунды. По состоянию на 2012 год обсуждается очередное изменение определения UTC, которое может привести к отмене високосных секунд или другим изменениям.
Учитывая описанные выше сложности точного измерения времени, этот API Java определяет собственную шкалу времени — шкалу времени Java.
Шкала времени Java делит каждый календарный день ровно на 86 400 частей, называемых секундами. Эти секунды могут отличаться от секунды СИ. Она близко соответствует фактически используемой международной шкале гражданского времени, определение которой время от времени меняется.
Для разных сегментов временной шкалы в шкале времени Java используются несколько отличающиеся определения, каждое из которых основано на согласованной международной шкале времени, используемой в качестве основы гражданского времени. При изменении или замене согласованной на международном уровне шкалы времени для нее необходимо определить новый сегмент шкалы времени Java. Каждый сегмент должен отвечать следующим требованиям:
- шкала времени Java должна точно соответствовать лежащей в ее основе международной шкале гражданского времени;
- шкала времени Java должна точно совпадать с международной шкалой гражданского времени в полдень каждого дня;
- для шкалы времени Java должна быть точно определена связь с международной шкалой гражданского времени.
Для сегмента, начинающегося 1972-11-03 (точная граница обсуждается ниже) и действующего до дальнейшего уведомления, согласованной международной шкалой времени является UTC (с високосными секундами). В этом сегменте шкала времени Java идентична UTC-SLS. Она идентична UTC в дни, в которые нет високосной секунды. В дни с високосной секундой эта секунда равномерно распределяется на последние 1000 секунд суток, благодаря чему сохраняется видимость суток, состоящих ровно из 86 400 секунд.
Для сегмента, предшествующего 1972-11-03 и произвольно далеко уходящего в прошлое, согласованной международной шкалой времени считается UT1, примененная пролептически, что соответствует (среднему) солнечному времени на нулевом меридиане (Гринвич). В этом сегменте шкала времени Java идентична согласованной международной шкале времени. Точная граница между двумя сегментами — момент, когда UT1 = UTC в интервале между 1972-11-03T00:00 и 1972-11-04T12:00.
Реализации шкалы времени Java с использованием API JSR-310 не обязаны предоставлять часы с точностью до долей секунды или часы, идущие монотонно и плавно. Поэтому реализации не обязаны фактически выполнять постепенную коррекцию UTC-SLS или учитывать високосные секунды иным образом. Однако JSR-310 требует, чтобы реализации документировали подход, используемый при определении часов, представляющих текущий момент. Сведения о доступных часах см. в Clock.
Шкала времени Java используется всеми классами даты и времени. К ним относятся Instant, LocalDate, LocalTime, OffsetDateTime, ZonedDateTime и Duration.
Это класс, основанный на значениях; программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать экземпляры для синхронизации, иначе может возникнуть непредсказуемое поведение. Например, в будущей версии синхронизация может не работать. Для сравнения следует использовать метод equals.
- Требования к реализации:
- Этот класс неизменяемый и потокобезопасный.
- Начиная с:
- 1.8
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final Instant |
EPOCH |
Константа для эпохи — момента 1970-01-01T00:00:00Z. |
static final Instant |
MAX |
Максимальное поддерживаемое значение Instant: '1000000000-12-31T23:59:59.999999999Z'. |
static final Instant |
MIN |
Минимальное поддерживаемое значение Instant: '-1000000000-01-01T00:00Z'. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Temporal |
adjustInto |
Настраивает указанный временной объект так, чтобы он представлял этот момент. |
OffsetDateTime |
atOffset |
Объединяет этот момент со смещением, создавая OffsetDateTime. |
ZonedDateTime |
atZone |
Объединяет этот момент с часовым поясом, создавая ZonedDateTime. |
int |
compareTo |
Сравнивает этот момент с указанным моментом. |
boolean |
equals |
Проверяет, равен ли этот момент указанному моменту. |
static Instant |
from |
Получает экземпляр Instant из временного объекта. |
int |
get |
Получает значение указанного поля этого момента в виде int. |
long |
getEpochSecond() |
Получает количество секунд, прошедших с эпохи Java 1970-01-01T00:00:00Z. |
long |
getLong |
Получает значение указанного поля этого момента в виде long. |
int |
getNano() |
Получает количество наносекунд от начала секунды до этого момента по временной шкале. |
int |
hashCode() |
Возвращает хеш-код этого момента. |
boolean |
isAfter |
Проверяет, наступает ли этот момент после указанного. |
boolean |
isBefore |
Проверяет, наступает ли этот момент до указанного. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
boolean |
isSupported |
Проверяет, поддерживается ли указанная единица измерения. |
Instant |
minus |
Возвращает копию этого момента с вычтенным указанным значением. |
Instant |
minus |
Возвращает копию этого момента с вычтенным указанным значением. |
Instant |
minusMillis |
Возвращает копию этого момента с вычтенным указанным интервалом в миллисекундах. |
Instant |
minusNanos |
Возвращает копию этого момента с вычтенным указанным интервалом в наносекундах. |
Instant |
minusSeconds |
Возвращает копию этого момента с вычтенным указанным интервалом в секундах. |
static Instant |
now() |
Получает текущий момент по системным часам. |
static Instant |
now |
Получает текущий момент по указанным часам. |
static Instant |
ofEpochMilli |
Получает экземпляр Instant, используя миллисекунды от эпохи 1970-01-01T00:00:00Z. |
static Instant |
ofEpochSecond |
Получает экземпляр Instant, используя секунды от эпохи 1970-01-01T00:00:00Z. |
static Instant |
ofEpochSecond |
Получает экземпляр Instant, используя секунды от эпохи 1970-01-01T00:00:00Z и долю секунды в наносекундах. |
static Instant |
parse |
Получает экземпляр Instant из текстовой строки, например 2007-12-03T10:15:30.00Z. |
Instant |
plus |
Возвращает копию этого момента с добавленным указанным значением. |
Instant |
plus |
Возвращает копию этого момента с добавленным указанным значением. |
Instant |
plusMillis |
Возвращает копию этого момента с добавленным указанным интервалом в миллисекундах. |
Instant |
plusNanos |
Возвращает копию этого момента с добавленным указанным интервалом в наносекундах. |
Instant |
plusSaturating |
Возвращает копию этого момента с добавленным указанным интервалом, используя семантику насыщения. |
Instant |
plusSeconds |
Возвращает копию этого момента с добавленным указанным интервалом в секундах. |
<R> R |
query |
Выполняет запрос к этому моменту с помощью указанного запроса. |
ValueRange |
range |
Получает диапазон допустимых значений для указанного поля. |
long |
toEpochMilli() |
Преобразует этот момент в количество миллисекунд, прошедших с эпохи 1970-01-01T00:00:00Z. |
String |
toString() |
Строковое представление этого момента в формате ISO-8601. |
Instant |
truncatedTo |
Возвращает копию этого Instant, усеченную до указанной единицы измерения. |
Duration |
until |
Вычисляет Duration до другого Instant. |
long |
until |
Вычисляет промежуток времени до другого момента в указанных единицах измерения. |
Instant |
with |
Возвращает скорректированную копию этого момента. |
Instant |
with |
Возвращает копию этого момента, в которой указанному полю присвоено новое значение. |
Методы, объявленные в классе 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() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени. |
Подробное описание полей
EPOCH
public static final Instant EPOCH
MIN
public static final Instant MIN
Instant, '-1000000000-01-01T00:00Z'. Приложение может использовать его как момент времени в «далёком прошлом». Это на один год раньше минимального значения LocalDateTime. Это обеспечивает достаточный диапазон значений для обработки диапазона ZoneOffset, которые влияют на момент времени помимо локальной даты и времени. Значение также выбрано так, чтобы год помещался в int.
MAX
public static final Instant MAX
Instant, '1000000000-12-31T23:59:59.999999999Z'. Приложение может использовать его как момент времени в «далёком будущем». Это на один год позже максимального значения LocalDateTime. Это обеспечивает достаточный диапазон значений для обработки диапазона ZoneOffset, которые влияют на момент времени помимо локальной даты и времени. Значение также выбрано так, чтобы год помещался в int.
Подробное описание методов
now
public static Instant now()
Для получения текущего момента времени выполняется запрос к system UTC clock.
Использование этого метода исключает возможность применения альтернативного источника времени для тестирования, поскольку часы фактически заданы жёстко.
- Возвращает:
- текущий момент времени по системным часам, не null
now
public static Instant now(Clock clock)
Для получения текущего времени выполняется запрос к указанным часам.
Этот метод позволяет использовать альтернативные часы для тестирования. Альтернативные часы можно создать с помощью dependency injection.
- Параметры:
-
clock- часы, которые следует использовать, не null - Возвращает:
- текущий момент времени, не null
ofEpochSecond
public static Instant ofEpochSecond(long epochSecond)
Instant, используя количество секунд от эпохи 1970-01-01T00:00:00Z. Поле наносекунд устанавливается в ноль.
- Параметры:
-
epochSecond- количество секунд от 1970-01-01T00:00:00Z - Возвращает:
- момент времени, не null
- Выбрасывает:
-
DateTimeException- если момент времени превышает максимальное или минимальное значение
ofEpochSecond
public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
Instant, используя количество секунд от эпохи 1970-01-01T00:00:00Z и долю секунды в наносекундах. Этот метод позволяет передать произвольное количество наносекунд. Фабричный метод изменяет значения секунд и наносекунд, чтобы хранимое значение наносекунд находилось в диапазоне от 0 до 999,999,999. Например, следующие вызовы дадут один и тот же момент времени:
Instant.ofEpochSecond(3, 1); Instant.ofEpochSecond(4, -999_999_999); Instant.ofEpochSecond(2, 1000_000_001);
- Параметры:
-
epochSecond- количество секунд от 1970-01-01T00:00:00Z -
nanoAdjustment- поправка в наносекундах к количеству секунд, положительная или отрицательная - Возвращает:
- момент времени, не null
- Выбрасывает:
-
DateTimeException- если момент времени превышает максимальное или минимальное значение -
ArithmeticException- при переполнении числового значения
ofEpochMilli
public static Instant ofEpochMilli(long epochMilli)
Instant, используя количество миллисекунд от эпохи 1970-01-01T00:00:00Z. Секунды и наносекунды извлекаются из указанного количества миллисекунд.
- Параметры:
-
epochMilli- количество миллисекунд от 1970-01-01T00:00:00Z - Возвращает:
- момент времени, не null
from
public static Instant from(TemporalAccessor temporal)
Instant из временного объекта. Создаёт момент времени на основе указанного временного объекта. TemporalAccessor представляет произвольный набор сведений о дате и времени, который эта фабрика преобразует в экземпляр Instant.
При преобразовании извлекаются поля INSTANT_SECONDS и NANO_OF_SECOND.
Сигнатура этого метода соответствует сигнатуре функционального интерфейса TemporalQuery, поэтому его можно использовать в качестве запроса через ссылку на метод, Instant::from.
- Параметры:
-
temporal- временной объект для преобразования, не null - Возвращает:
- момент времени, не null
- Выбрасывает:
-
DateTimeException- если не удаётся преобразовать вInstant
parse
public static Instant parse(CharSequence text)
Instant из текстовой строки, например 2007-12-03T10:15:30.00Z. Строка должна представлять допустимый момент времени в UTC; для её разбора используется DateTimeFormatter.ISO_INSTANT.
- Параметры:
-
text- текст для разбора, не null - Возвращает:
- разобранный момент времени, не null
- Выбрасывает:
-
DateTimeParseException- если текст не удаётся разобрать
isSupported
public boolean isSupported(TemporalField field)
Проверяет, можно ли получить значение указанного поля для этого момента времени. Если это невозможно, вызовы методов range, get и with(TemporalField, long) приведут к выбрасыванию исключения.
Если поле является ChronoField, запрос обрабатывается здесь. Поддерживаются следующие поля:
-
NANO_OF_SECOND -
MICRO_OF_SECOND -
MILLI_OF_SECOND -
INSTANT_SECONDS
ChronoField возвращается false. Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.isSupportedBy(TemporalAccessor) с аргументом this. Поддержка поля определяется самим полем.
- Определено в:
-
isSupportedв интерфейсеTemporalAccessor - Параметры:
-
field- поле для проверки; для null возвращается false - Возвращает:
- true, если поле поддерживается для этого момента времени; в противном случае false
isSupported
public boolean isSupported(TemporalUnit unit)
Проверяет, можно ли прибавить указанную единицу измерения к этой дате и времени или вычесть её из них. Если это невозможно, вызовы методов plus(long, TemporalUnit) и minus приведут к выбрасыванию исключения.
Если единица измерения является ChronoUnit, запрос обрабатывается здесь. Поддерживаются следующие единицы измерения:
-
NANOS -
MICROS -
MILLIS -
SECONDS -
MINUTES -
HOURS -
HALF_DAYS -
DAYS
ChronoUnit возвращается false. Если единица измерения не является ChronoUnit, результат этого метода определяется вызовом TemporalUnit.isSupportedBy(Temporal) с аргументом this. Поддержка единицы измерения определяется самой единицей.
- Определено в:
-
isSupportedв интерфейсеTemporal - Параметры:
-
unit- единица измерения для проверки; для null возвращается false - Возвращает:
- true, если единицу измерения можно прибавить или вычесть; в противном случае false
range
public ValueRange range(TemporalField field)
Объект диапазона задаёт минимальное и максимальное допустимые значения поля. Этот момент времени используется для повышения точности возвращаемого диапазона. Если вернуть диапазон невозможно, поскольку поле не поддерживается или по другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает соответствующие экземпляры диапазона. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.rangeRefinedBy(TemporalAccessor) с аргументом this. Возможность получить диапазон определяется самим полем.
- Определено в:
-
rangeв интерфейсеTemporalAccessor - Параметры:
-
field- поле, для которого требуется получить диапазон, не null - Возвращает:
- диапазон допустимых значений поля, не null
- Выбрасывает:
-
DateTimeException- если диапазон для поля получить невозможно -
UnsupportedTemporalTypeException- если поле не поддерживается
get
public int get(TemporalField field)
int. Запрашивает у этого момента времени значение указанного поля. Возвращённое значение всегда будет находиться в допустимом диапазоне значений поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает допустимые значения для этой даты и времени, за исключением INSTANT_SECONDS, которое слишком велико для представления в int и приводит к выбрасыванию DateTimeException. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.getFrom(TemporalAccessor) с аргументом this. Возможность получить значение и его смысл определяются самим полем.
- Определено в:
-
getв интерфейсеTemporalAccessor - Параметры:
-
field- поле для получения значения, не null - Возвращает:
- значение поля
- Выбрасывает:
-
DateTimeException- если значение поля получить невозможно или оно находится вне допустимого диапазона значений поля -
UnsupportedTemporalTypeException- если поле не поддерживается или диапазон значений превышает возможностиint -
ArithmeticException- при переполнении числового значения
getLong
public long getLong(TemporalField field)
long. Запрашивает у этого момента времени значение указанного поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по другой причине, выбрасывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает допустимые значения для этой даты и времени. Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.getFrom(TemporalAccessor) с аргументом this. Возможность получить значение и его смысл определяются самим полем.
- Определено в:
-
getLongв интерфейсеTemporalAccessor - Параметры:
-
field- поле для получения значения, не null - Возвращает:
- значение поля
- Выбрасывает:
-
DateTimeException- если значение поля получить невозможно -
UnsupportedTemporalTypeException- если поле не поддерживается -
ArithmeticException- при переполнении числового значения
getEpochSecond
public long getEpochSecond()
Количество секунд эпохи представляет собой простой возрастающий счётчик секунд, в котором секунда 0 соответствует 1970-01-01T00:00:00Z. Значение наносекунд возвращается методом getNano().
- Возвращает:
- количество секунд от эпохи 1970-01-01T00:00:00Z
getNano
public int getNano()
Значение наносекунд в секунде показывает общее количество наносекунд с начала секунды, возвращаемой методом getEpochSecond().
- Возвращает:
- количество наносекунд в секунде; всегда положительное, не превышает 999,999,999
with
public Instant with(TemporalAdjuster adjuster)
Возвращает экземпляр Instant, основанный на этом, с скорректированным моментом времени. Корректировка выполняется с помощью указанного объекта-стратегии. Ознакомьтесь с документацией корректировщика, чтобы узнать, какая именно корректировка будет выполнена.
Результат этого метода получается вызовом метода TemporalAdjuster.adjustInto(Temporal) у указанного корректировщика с аргументом this.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
adjuster- корректировщик для использования, не null - Возвращает:
- экземпляр
Instant, основанный наthis, к которому применена корректировка, не null - Выбрасывает:
-
DateTimeException- если корректировку невозможно выполнить -
ArithmeticException- при переполнении числового значения
with
public Instant with(TemporalField field, long newValue)
Возвращает экземпляр Instant, основанный на этом, с изменённым значением указанного поля. Если установить значение невозможно, поскольку поле не поддерживается или по другой причине, выбрасывается исключение.
Если поле является ChronoField, корректировка выполняется здесь. Поддерживаемые поля обрабатываются следующим образом:
-
NANO_OF_SECOND- возвращает экземплярInstantс указанным значением наносекунд в секунде. Количество секунд эпохи не изменяется. -
MICRO_OF_SECOND- возвращает экземплярInstant, в котором значение наносекунд в секунде заменено указанным значением микросекунд в секунде, умноженным на 1 000. Количество секунд эпохи не изменяется. -
MILLI_OF_SECOND- возвращает экземплярInstant, в котором значение наносекунд в секунде заменено указанным значением миллисекунд в секунде, умноженным на 1 000 000. Количество секунд эпохи не изменяется. -
INSTANT_SECONDS- возвращает экземплярInstantс указанным количеством секунд эпохи. Значение наносекунд в секунде не изменяется.
Во всех случаях, если новое значение выходит за допустимый диапазон значений поля, будет выброшено DateTimeException.
Для всех остальных экземпляров ChronoField выбрасывается UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода определяется вызовом TemporalField.adjustInto(Temporal, long) с аргументом this. В этом случае поле определяет, следует ли корректировать момент времени и каким образом.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
field- поле, которому следует присвоить значение в результате, не null -
newValue- новое значение поля в результате - Возвращает:
- экземпляр
Instant, основанный наthis, с указанным значением поля, не null - Выбрасывает:
-
DateTimeException- если значение поля невозможно установить -
UnsupportedTemporalTypeException- если поле не поддерживается -
ArithmeticException- при переполнении числового значения
truncatedTo
public Instant truncatedTo(TemporalUnit unit)
Instant, округлённую вниз до указанной единицы измерения. Округление момента времени вниз возвращает копию исходного значения, в которой поля меньше указанной единицы измерения установлены в ноль. Поля вычисляются с учётом смещения UTC, как описано в toString. Например, округление до единицы MINUTES отбросит остаток до ближайшей минуты, установив секунды и наносекунды в ноль.
Длительность единицы измерения должна делить длительность стандартных суток без остатка. Это условие выполняется для всех предоставляемых единиц времени из ChronoUnit и для DAYS. Для других единиц измерения выбрасывается исключение.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
unit- единица измерения, до которой следует округлить, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с усечённым временем, не null - Выбрасывает:
-
DateTimeException- если единица измерения недопустима для усечения -
UnsupportedTemporalTypeException- если единица измерения не поддерживается
plus
public Instant plus(TemporalAmount amountToAdd)
Возвращает экземпляр Instant, основанный на этом, с прибавленной указанной величиной. Обычно величина представляет собой Duration, но может иметь любой другой тип, реализующий интерфейс TemporalAmount.
Вычисление делегируется объекту величины путём вызова TemporalAmount.addTo(Temporal). Реализация величины может выполнять сложение любым способом, однако обычно она вызывает plus(long, TemporalUnit). Ознакомьтесь с документацией реализации величины, чтобы узнать, можно ли успешно её прибавить.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd- величина для прибавления, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с выполненным сложением, не null - Выбрасывает:
-
DateTimeException- если сложение невозможно выполнить -
ArithmeticException- при переполнении числового значения
plusSaturating
public Instant plusSaturating(Duration duration)
Если результат «раньше» MIN, этот метод возвращает MIN. Если результат «позже» MAX, он возвращает MAX. В противном случае возвращается результат plus(duration).
- Примечание API:
- Этот метод можно использовать для вычисления крайнего срока на основе этого момента времени и времени ожидания. В отличие от
plus(duration), этот метод никогда не выбрасываетArithmeticExceptionилиDateTimeExceptionиз-за переполнения числового значения или выхода за диапазонInstant. - Параметры:
-
duration- длительность для прибавления, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с выполненным сложением, не null - Начиная с:
- 26
plus
public Instant plus(long amountToAdd, TemporalUnit unit)
Возвращает экземпляр Instant, основанный на этом, с прибавленной величиной, выраженной в указанной единице измерения. Если прибавить величину невозможно, поскольку единица измерения не поддерживается или по другой причине, выбрасывается исключение.
Если единица измерения является ChronoUnit, сложение выполняется здесь. Поддерживаемые единицы обрабатываются следующим образом:
-
NANOS- возвращает экземплярInstantс прибавленным указанным количеством наносекунд. Эквивалентно вызовуplusNanos(long). -
MICROS- возвращает экземплярInstantс прибавленным указанным количеством микросекунд. Эквивалентно вызовуplusNanos(long), где величина умножена на 1 000. -
MILLIS- возвращает экземплярInstantс прибавленным указанным количеством миллисекунд. Эквивалентно вызовуplusNanos(long), где величина умножена на 1 000 000. -
SECONDS- возвращает экземплярInstantс прибавленным указанным количеством секунд. Эквивалентно вызовуplusSeconds(long). -
MINUTES- возвращает экземплярInstantс прибавленным указанным количеством минут. Эквивалентно вызовуplusSeconds(long), где величина умножена на 60. -
HOURS- возвращает экземплярInstantс прибавленным указанным количеством часов. Эквивалентно вызовуplusSeconds(long), где величина умножена на 3 600. -
HALF_DAYS- возвращает экземплярInstantс прибавленным указанным количеством полусуток. Эквивалентно вызовуplusSeconds(long), где величина умножена на 43 200 (12 часов). -
DAYS- возвращает экземплярInstantс прибавленным указанным количеством суток. Эквивалентно вызовуplusSeconds(long), где величина умножена на 86 400 (24 часа).
Для всех остальных экземпляров ChronoUnit выбрасывается UnsupportedTemporalTypeException.
Если единица измерения не является ChronoUnit, результат этого метода определяется вызовом TemporalUnit.addTo(Temporal, long) с аргументом this. В этом случае единица измерения определяет, следует ли выполнять сложение и каким образом.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd- количество единиц измерения для прибавления к результату; может быть отрицательным -
unit- единица измерения прибавляемой величины, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с прибавленной указанной величиной, не null - Выбрасывает:
-
DateTimeException- если сложение невозможно выполнить -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при переполнении числового значения
plusSeconds
public Instant plusSeconds(long secondsToAdd)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
secondsToAdd- количество секунд для прибавления, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с прибавленным указанным количеством секунд, не null - Выбрасывает:
-
DateTimeException- если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException- при переполнении числового значения
plusMillis
public Instant plusMillis(long millisToAdd)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
millisToAdd- количество миллисекунд для прибавления, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с прибавленным указанным количеством миллисекунд, не null - Выбрасывает:
-
DateTimeException- если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException- при переполнении числового значения
plusNanos
public Instant plusNanos(long nanosToAdd)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
nanosToAdd- количество наносекунд для прибавления, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, с прибавленным указанным количеством наносекунд, не null - Выбрасывает:
-
DateTimeException- если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException- при переполнении числового значения
minus
public Instant minus(TemporalAmount amountToSubtract)
Возвращает Instant на основе этого момента времени, из которого вычтено указанное значение. Обычно это значение — Duration, но оно может быть любого другого типа, реализующего интерфейс TemporalAmount.
Вычисление делегируется объекту значения вызовом метода TemporalAmount.subtractFrom(Temporal). Реализация значения может выполнить вычитание любым способом, однако обычно она вызывает minus(long, TemporalUnit). Чтобы определить, можно ли успешно вычесть значение, обратитесь к документации его реализации.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract- значение для вычитания, не null - Возвращает:
Instantна основе этого момента времени с выполненным вычитанием, не null- Исключения:
-
DateTimeException- если вычитание невозможно выполнить -
ArithmeticException- при переполнении числового значения
minus
public Instant minus(long amountToSubtract, TemporalUnit unit)
Возвращает Instant на основе этого момента времени, из которого вычтено значение, выраженное в единицах измерения. Если вычесть значение невозможно, поскольку единица измерения не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Этот метод эквивалентен методу plus(long, TemporalUnit) с противоположным по знаку значением. Полное описание принципа сложения и, следовательно, вычитания см. в документации этого метода.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract- количество единиц измерения, вычитаемое из результата; может быть отрицательным -
unit- единица измерения вычитаемого значения, не null - Возвращает:
Instantна основе этого момента времени с вычтенным указанным значением, не null- Исключения:
-
DateTimeException- если вычитание невозможно выполнить -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при переполнении числового значения
minusSeconds
public Instant minusSeconds(long secondsToSubtract)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
secondsToSubtract- количество секунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством секунд, не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального момента времени -
ArithmeticException- при переполнении числового значения
minusMillis
public Instant minusMillis(long millisToSubtract)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
millisToSubtract- количество миллисекунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством миллисекунд, не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального момента времени -
ArithmeticException- при переполнении числового значения
minusNanos
public Instant minusNanos(long nanosToSubtract)
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
nanosToSubtract- количество наносекунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством наносекунд, не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального момента времени -
ArithmeticException- при переполнении числового значения
query
public <R> R query(TemporalQuery<R> query)
Выполняет запрос к этому моменту времени с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Чтобы понять, каким будет результат этого метода, ознакомьтесь с документацией запроса.
Результат этого метода получается вызовом метода TemporalQuery.queryFrom(TemporalAccessor) для указанного запроса с передачей this в качестве аргумента.
- Указано в:
-
queryв интерфейсеTemporalAccessor - Параметры типа:
R- тип результата- Параметры:
-
query- вызываемый запрос, не null - Возвращает:
- результат запроса; может быть возвращено null (определяется запросом)
- Исключения:
-
DateTimeException- если выполнить запрос невозможно (определяется запросом) -
ArithmeticException- при переполнении числового значения (определяется запросом)
adjustInto
public Temporal adjustInto(Temporal temporal)
Возвращает объект времени того же наблюдаемого типа, что и входной объект, изменив его момент времени так, чтобы он совпадал с этим.
Корректировка эквивалентна двукратному использованию Temporal.with(TemporalField, long) с передачей полей ChronoField.INSTANT_SECONDS и ChronoField.NANO_OF_SECOND.
В большинстве случаев понятнее изменить порядок вызова и использовать Temporal.with(TemporalAdjuster):
// these two lines are equivalent, but the second approach is recommended temporal = thisInstant.adjustInto(temporal); temporal = temporal.with(thisInstant);
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
adjustIntoв интерфейсеTemporalAdjuster - Параметры:
-
temporal- целевой объект для корректировки, не null - Возвращает:
- скорректированный объект, не null
- Исключения:
-
DateTimeException- если выполнить корректировку невозможно -
ArithmeticException- при переполнении числового значения
until
public long until(Temporal endExclusive, TemporalUnit unit)
Вычисляет время между двумя объектами Instant в единицах одной TemporalUnit. Начальной и конечной точками являются this и указанный момент времени. Результат будет отрицательным, если конечная точка предшествует начальной. Вычисление возвращает целое число, представляющее количество полных единиц между двумя моментами времени. Переданный этому методу объект Temporal преобразуется в Instant с помощью from(TemporalAccessor). Например, количество секунд между двумя датами можно вычислить с помощью startInstant.until(endInstant, SECONDS).
Этот метод можно использовать двумя эквивалентными способами. Первый — вызвать данный метод. Второй — использовать TemporalUnit.between(Temporal, Temporal):
// these two lines are equivalent amount = start.until(end, SECONDS); amount = SECONDS.between(start, end);Выбор следует делать исходя из того, какой вариант делает код более понятным.
Вычисление реализовано в этом методе для ChronoUnit. Поддерживаются единицы NANOS, MICROS, MILLIS, SECONDS, MINUTES, HOURS, HALF_DAYS и DAYS. Другие значения ChronoUnit приведут к выбрасыванию исключения.
Если единица измерения не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.between(Temporal, Temporal) с передачей this в качестве первого аргумента, а преобразованного входного объекта времени — в качестве второго аргумента.
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Указано в:
-
untilв интерфейсеTemporal - Параметры:
-
endExclusive- конечная дата, не включая её; преобразуется вInstant, не null -
unit- единица измерения времени, не null - Возвращает:
- время между этим моментом времени и конечным моментом времени
- Исключения:
-
DateTimeException- если вычислить значение невозможно или конечный объект времени нельзя преобразовать вInstant -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при переполнении числового значения
until
public Duration until(Instant endExclusive)
Duration до другого Instant. Начальной и конечной точками являются this и указанный момент времени. Результат будет отрицательным, если конечная точка предшествует начальной. Вызов этого метода эквивалентен вызову Duration.between(this,
endExclusive).
Этот экземпляр неизменяем, и вызов данного метода не влияет на него.
- Параметры:
-
endExclusive- конечныйInstant, не включая его; не null - Возвращает:
Durationот этогоInstantдо указанногоendExclusiveInstant- Начиная с версии:
- 23
- См. также:
atOffset
public OffsetDateTime atOffset(ZoneOffset offset)
OffsetDateTime. Возвращает OffsetDateTime, сформированный из этого момента времени с указанным смещением относительно UTC/Гринвича. Если момент времени слишком велик и не помещается в дату и время со смещением, будет выброшено исключение.
Этот метод эквивалентен OffsetDateTime.ofInstant(this, offset).
- Параметры:
-
offset- смещение для объединения, не null - Возвращает:
- дата и время со смещением, сформированные из этого момента времени и указанного смещения, не null
- Исключения:
-
DateTimeException- если результат выходит за пределы поддерживаемого диапазона
atZone
public ZonedDateTime atZone(ZoneId zone)
ZonedDateTime. Возвращает ZonedDateTime, сформированный из этого момента времени в указанном часовом поясе. Если момент времени слишком велик и не помещается в дату и время с часовым поясом, будет выброшено исключение.
Этот метод эквивалентен ZonedDateTime.ofInstant(this, zone).
- Параметры:
-
zone- часовой пояс для объединения, не null - Возвращает:
- дата и время с часовым поясом, сформированные из этого момента времени и указанного часового пояса, не null
- Исключения:
-
DateTimeException- если результат выходит за пределы поддерживаемого диапазона
toEpochMilli
public long toEpochMilli()
Если этот момент времени находится на временной шкале настолько далеко в будущем или прошлом, что не помещается в long миллисекунд, выбрасывается исключение.
Если точность этого момента времени выше миллисекундной, при преобразовании отбрасывается избыточная точность, как если бы количество наносекунд делилось на миллион с целочисленным делением.
- Возвращает:
- количество миллисекунд с начала эпохи 1970-01-01T00:00:00Z
- Исключения:
-
ArithmeticException- при переполнении числового значения
compareTo
public int compareTo(Instant otherInstant)
Сравнение основано на положении моментов времени на временной шкале. Оно «согласовано с equals» в соответствии с определением Comparable.
- Указано в:
-
compareToв интерфейсеComparable<Instant> - Параметры:
-
otherInstant- другой момент времени для сравнения, не null - Возвращает:
- значение сравнения: меньше нуля, если этот момент времени предшествует
otherInstant, ноль, если они равны, или больше нуля, если этот момент времени следует заotherInstant - Исключения:
-
NullPointerException- если otherInstant равен null - См. также:
isAfter
public boolean isAfter(Instant otherInstant)
Сравнение основано на положении моментов времени на временной шкале.
- Параметры:
-
otherInstant- другой момент времени для сравнения, не null - Возвращает:
- true, если этот момент времени следует за указанным моментом времени
- Исключения:
-
NullPointerException- если otherInstant равен null
isBefore
public boolean isBefore(Instant otherInstant)
Сравнение основано на положении моментов времени на временной шкале.
- Параметры:
-
otherInstant- другой момент времени для сравнения, не null - Возвращает:
- true, если этот момент времени предшествует указанному моменту времени
- Исключения:
-
NullPointerException- если otherInstant равен null
equals
public boolean equals(Object other)
Сравнение основано на положении моментов времени на временной шкале.
hashCode
toString
public String toString()
Используется тот же формат, что и в DateTimeFormatter.ISO_INSTANT.
© 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.