Spec-Zone.ru › OpenJDK 27

Класс Instant

java.lang.Object
java.time.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 должна быть точно определена связь с международной шкалой гражданского времени.
По состоянию на 2013 год в шкале времени 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(Temporal temporal)
Настраивает указанный временной объект так, чтобы он представлял этот момент.
OffsetDateTime atOffset(ZoneOffset offset)
Объединяет этот момент со смещением, создавая OffsetDateTime.
ZonedDateTime atZone(ZoneId zone)
Объединяет этот момент с часовым поясом, создавая ZonedDateTime.
int compareTo(Instant otherInstant)
Сравнивает этот момент с указанным моментом.
boolean equals(Object other)
Проверяет, равен ли этот момент указанному моменту.
static Instant from(TemporalAccessor temporal)
Получает экземпляр Instant из временного объекта.
int get(TemporalField field)
Получает значение указанного поля этого момента в виде int.
long getEpochSecond()
Получает количество секунд, прошедших с эпохи Java 1970-01-01T00:00:00Z.
long getLong(TemporalField field)
Получает значение указанного поля этого момента в виде long.
int getNano()
Получает количество наносекунд от начала секунды до этого момента по временной шкале.
int hashCode()
Возвращает хеш-код этого момента.
boolean isAfter(Instant otherInstant)
Проверяет, наступает ли этот момент после указанного.
boolean isBefore(Instant otherInstant)
Проверяет, наступает ли этот момент до указанного.
boolean isSupported(TemporalField field)
Проверяет, поддерживается ли указанное поле.
boolean isSupported(TemporalUnit unit)
Проверяет, поддерживается ли указанная единица измерения.
Instant minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этого момента с вычтенным указанным значением.
Instant minus(TemporalAmount amountToSubtract)
Возвращает копию этого момента с вычтенным указанным значением.
Instant minusMillis(long millisToSubtract)
Возвращает копию этого момента с вычтенным указанным интервалом в миллисекундах.
Instant minusNanos(long nanosToSubtract)
Возвращает копию этого момента с вычтенным указанным интервалом в наносекундах.
Instant minusSeconds(long secondsToSubtract)
Возвращает копию этого момента с вычтенным указанным интервалом в секундах.
static Instant now()
Получает текущий момент по системным часам.
static Instant now(Clock clock)
Получает текущий момент по указанным часам.
static Instant ofEpochMilli(long epochMilli)
Получает экземпляр Instant, используя миллисекунды от эпохи 1970-01-01T00:00:00Z.
static Instant ofEpochSecond(long epochSecond)
Получает экземпляр Instant, используя секунды от эпохи 1970-01-01T00:00:00Z.
static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
Получает экземпляр Instant, используя секунды от эпохи 1970-01-01T00:00:00Z и долю секунды в наносекундах.
static Instant parse(CharSequence text)
Получает экземпляр Instant из текстовой строки, например 2007-12-03T10:15:30.00Z.
Instant plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этого момента с добавленным указанным значением.
Instant plus(TemporalAmount amountToAdd)
Возвращает копию этого момента с добавленным указанным значением.
Instant plusMillis(long millisToAdd)
Возвращает копию этого момента с добавленным указанным интервалом в миллисекундах.
Instant plusNanos(long nanosToAdd)
Возвращает копию этого момента с добавленным указанным интервалом в наносекундах.
Instant plusSaturating(Duration duration)
Возвращает копию этого момента с добавленным указанным интервалом, используя семантику насыщения.
Instant plusSeconds(long secondsToAdd)
Возвращает копию этого момента с добавленным указанным интервалом в секундах.
<R> R query(TemporalQuery<R> query)
Выполняет запрос к этому моменту с помощью указанного запроса.
ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.
long toEpochMilli()
Преобразует этот момент в количество миллисекунд, прошедших с эпохи 1970-01-01T00:00:00Z.
String toString()
Строковое представление этого момента в формате ISO-8601.
Instant truncatedTo(TemporalUnit unit)
Возвращает копию этого Instant, усеченную до указанной единицы измерения.
Duration until(Instant endExclusive)
Вычисляет Duration до другого Instant.
long until(Temporal endExclusive, TemporalUnit unit)
Вычисляет промежуток времени до другого момента в указанных единицах измерения.
Instant with(TemporalAdjuster adjuster)
Возвращает скорректированную копию этого момента.
Instant with(TemporalField field, long newValue)
Возвращает копию этого момента, в которой указанному полю присвоено новое значение.

Методы, объявленные в классе 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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения определенного промежутка реального времени.

Подробное описание полей

EPOCH

public static final Instant EPOCH
Константа для момента эпохи 1970-01-01T00:00:00Z.

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()
Получает количество секунд от эпохи Java 1970-01-01T00:00:00Z.

Количество секунд эпохи представляет собой простой возрастающий счётчик секунд, в котором секунда 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 до указанного endExclusive Instant
Начиная с версии:
23
См. также:
  • Duration.between(Temporal, Temporal)

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()
Преобразует этот момент времени в количество миллисекунд от начала эпохи 1970-01-01T00:00:00Z.

Если этот момент времени находится на временной шкале настолько далеко в будущем или прошлом, что не помещается в 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
См. также:
  • isBefore(Instant)
  • isAfter(Instant)

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)
Проверяет, равен ли этот момент времени указанному моменту времени.

Сравнение основано на положении моментов времени на временной шкале.

Переопределяет:
equals в классе Object
Параметры:
other - другой момент времени; null возвращает false
Возвращает:
true, если другой момент времени равен этому
См. также:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хеш-код этого момента времени.
Переопределяет:
hashCode в классе Object
Возвращает:
подходящий хеш-код
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

toString

public String toString()
Строковое представление этого момента времени в формате ISO-8601.

Используется тот же формат, что и в DateTimeFormatter.ISO_INSTANT.

Переопределяет:
toString в классе Object
Возвращает:
представление этого момента времени в формате ISO-8601, не null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, где содержатся более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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