Spec-Zone.ru › OpenJDK 25

Класс 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 секунд, что составляет 86400 секунд в сутках.

Современный отсчёт времени основан на атомных часах, которые точно определяют секунду СИ относительно переходов атома цезия. Продолжительность секунды СИ была определена как величина, очень близкая к 1/86400 суток.

К сожалению, из-за вращения Земли продолжительность суток меняется. Кроме того, со временем средняя продолжительность суток увеличивается, поскольку вращение Земли замедляется. В результате солнечные сутки в 2012 году немного длиннее 86400 секунд СИ. Фактическую продолжительность любых конкретных суток и величину замедления вращения Земли невозможно предсказать — их можно определить только измерением. Шкала времени UT1 точно отражает продолжительность суток, но становится доступна лишь через некоторое время после их окончания.

Шкала времени UTC — это стандартный способ объединить все дополнительные доли секунды из UT1 в целые секунды, называемые високосными секундами. В зависимости от изменений вращения Земли високосная секунда может быть добавлена или удалена. Таким образом, при необходимости UTC допускает продолжительность суток в 86399 или 86401 секунду СИ, чтобы сохранить соответствие суток положению Солнца.

Современная шкала времени UTC была введена в 1972 году вместе с понятием целых високосных секунд. В период с 1958 по 1972 год определение UTC было сложным: оно включало небольшие високосные доли секунды и изменения продолжительности условной секунды. По состоянию на 2012 год обсуждалось повторное изменение определения UTC с возможной отменой високосных секунд или введением других изменений.

Учитывая описанную выше сложность точного измерения времени, этот API Java определяет собственную шкалу времени — шкалу времени Java.

Шкала времени Java делит каждый календарный день ровно на 86400 частей, называемых секундами. Эти секунды могут отличаться от секунды СИ. Она близко соответствует фактически используемой международной гражданской шкале времени, определение которой время от времени меняется.

Для разных участков временной шкалы Java Time-Scale имеет несколько отличающиеся определения, каждое из которых основано на согласованной международной шкале времени, используемой в качестве основы гражданского времени. При изменении или замене согласованной на международном уровне шкалы времени для неё необходимо определить новый участок шкалы времени Java. Каждый участок должен удовлетворять следующим требованиям:

  • шкала времени Java должна близко соответствовать лежащей в её основе международной гражданской шкале времени;
  • шкала времени Java должна точно соответствовать международной гражданской шкале времени в полдень каждого дня;
  • для шкалы времени Java должно быть точно определено соотношение с международной гражданской шкалой времени.
По состоянию на 2013 год шкала времени Java включает два участка.

Для участка, начинающегося 1972-11-03 (точная граница обсуждается ниже) и продолжающегося до дальнейшего уведомления, согласованной международной шкалой времени является UTC (с високосными секундами). На этом участке шкала времени Java идентична UTC-SLS. В дни без високосной секунды она идентична UTC. В дни с високосной секундой эта секунда равномерно распределяется на последние 1000 секунд суток, сохраняя видимость ровно 86400 секунд в сутках.

Для участка до 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 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

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

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 — при переполнении числового значения

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/Instant.html

Spec-Zone.ru

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