Spec-Zone.ru › OpenJDK 24

Класс 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-секундный день.

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

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

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

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

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

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

Временная шкала Java имеет несколько разные определения для разных сегментов временной шкалы, каждый из которых основан на международной шкале времени, которая используется в качестве основы для гражданского времени. Всякий раз, когда международная шкала времени изменяется или заменяется, для неё должен быть определён новый сегмент временной шкалы 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)
Возвращает копию этого момента с указанным полем, установленным на новое значение.

Методы, объявленные в классе java.lang.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)
Проверяет, поддерживается ли указанное поле.

Проверяет, можно ли запросить этот момент времени для указанного поля. Если false, то вызов методов 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)
Проверяет, поддерживается ли указанная единица измерения.

Проверяет, можно ли добавить или вычесть указанную единицу измерения из этого момента времени. Если false, вызов методов 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 в противном случае

диапазон

public ValueRange range(TemporalField field)
Получает диапазон допустимых значений для указанного поля.

Объект диапазона выражает минимальное и максимальное допустимые значения для поля. Этот момент используется для повышения точности возвращаемого диапазона. Если невозможно вернуть диапазон, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то запрос реализуется здесь. supported fields вернёт соответствующие экземпляры диапазона. Все другие ChronoField экземпляры будут выбрасывать UnsupportedTemporalTypeException.

Если поле не является ChronoField, то результат этого метода получается путём вызова TemporalField.rangeRefinedBy(TemporalAccessor), передавая this в качестве аргумента. Возможно ли получить диапазон определяется полем.

Указано в:
range в интерфейсе TemporalAccessor
Параметры:
field - поле, для которого необходимо получить диапазон, не null
Возвращает:
диапазон допустимых значений для поля, не null
Выбрасывает:
DateTimeException - если диапазон для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается

получить

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 - если происходит переполнение чисел

получитьДлинное

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

с

public Instant with(TemporalAdjuster adjuster)
Возвращает скопированную изменённую копию этого момента.

Это возвращает Instant, основанную на этой, с изменённым моментом. Изменение выполняется с использованием указанной стратегии корректировки. Прочитайте документацию корректировщика, чтобы понять, какое изменение будет выполнено.

Результат этого метода получается вызовом метода TemporalAdjuster.adjustInto(Temporal) на указанном корректировщике, передавая this в качестве аргумента.

Этот экземпляр неизменяем и не затрагивается этим вызовом метода.

Указано в:
with в интерфейсе Temporal
Параметры:
adjuster - используемый корректировщик, не null
Возвращает:
Instant, основанную на this с выполненной корректировкой, не null
Выбрасывает:
DateTimeException - если корректировку выполнить невозможно
ArithmeticException - если происходит переполнение чисел

с

public Instant with(TemporalField field, long newValue)
Возвращает копию этого момента с указанным полем, установленным на новое значение.

Это возвращает Instant, основанную на этой, со значением для указанного поля, изменённым. Если невозможно установить значение, потому что поле не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoField, то корректировка реализуется здесь. Поддерживаемые поля ведут себя следующим образом:

  • NANO_OF_SECOND - Возвращает Instant с указанным наносекунд-в-секунде. Эпоха-секунда останется неизменной.
  • MICRO_OF_SECOND - Возвращает Instant с наносекунд-в-секунде, заменёнными на указанные микросекунд-в-секунде, умноженными на 1000. Эпоха-секунда останется неизменной.
  • 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). Обратитесь к документации реализации значения, чтобы определить, можно ли его успешно добавить.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
plus в интерфейсе Temporal
Parameters:
amountToAdd - значение для добавления, не null
Returns:
Instant, основанный на этом моменте времени с выполненным добавлением, не null
Throws:
DateTimeException - если добавление невозможно
ArithmeticException - если происходит переполнение числовых значений

plus

public Instant plus(long amountToAdd, TemporalUnit unit)
Возвращает копию этого момента времени с добавлением указанного значения.

Это возвращает Instant, основанный на этом, со значением в терминах добавленной единицы. Если невозможно добавить значение, потому что единица не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Если поле является ChronoUnit, то добавление реализуется здесь. Поддерживаемые поля ведут себя следующим образом:

  • NANOS - Возвращает Instant с добавлением указанного количества наносекунд. Это эквивалентно plusNanos(long).
  • MICROS - Возвращает Instant с добавлением указанного количества микросекунд. Это эквивалентно plusNanos(long) со значением, умноженным на 1000.
  • MILLIS - Возвращает Instant с добавлением указанного количества миллисекунд. Это эквивалентно plusNanos(long) со значением, умноженным на 1 000 000.
  • SECONDS - Возвращает Instant с добавлением указанного количества секунд. Это эквивалентно plusSeconds(long).
  • MINUTES - Возвращает Instant с добавлением указанного количества минут. Это эквивалентно plusSeconds(long) со значением, умноженным на 60.
  • HOURS - Возвращает Instant с добавлением указанного количества часов. Это эквивалентно plusSeconds(long) со значением, умноженным на 3600.
  • HALF_DAYS - Возвращает Instant с добавлением указанного количества полусуток. Это эквивалентно plusSeconds(long) со значением, умноженным на 43 200 (12 часов).
  • DAYS - Возвращает Instant с добавлением указанного количества дней. Это эквивалентно plusSeconds(long) со значением, умноженным на 86 400 (24 часа).

Все остальные ChronoUnit экземпляры будут выбрасывать UnsupportedTemporalTypeException.

Если поле не является ChronoUnit, то результат этого метода получается путем вызова TemporalUnit.addTo(Temporal, long), передавая this в качестве аргумента. В этом случае единица определяет, как и нужно ли выполнять добавление.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
plus в интерфейсе Temporal
Parameters:
amountToAdd - количество единицы для добавления к результату, может быть отрицательным
unit - единица количества для добавления, не null
Returns:
Instant, основанный на этом моменте времени с добавленным указанным значением, не null
Throws:
DateTimeException - если добавление невозможно
UnsupportedTemporalTypeException - если единица не поддерживается
ArithmeticException - если происходит переполнение числовых значений

plusSeconds

public Instant plusSeconds(long secondsToAdd)
Возвращает копию этого момента времени с добавлением указанной продолжительности в секундах.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
secondsToAdd - секунды для добавления, положительные или отрицательные
Returns:
Instant, основанный на этом моменте времени с добавленными указанными секундами, не null
Throws:
DateTimeException - если результат превышает максимальное или минимальное значение момента времени
ArithmeticException - если происходит переполнение числовых значений

plusMillis

public Instant plusMillis(long millisToAdd)
Возвращает копию этого момента времени с добавлением указанной продолжительности в миллисекундах.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
millisToAdd - миллисекунды для добавления, положительные или отрицательные
Returns:
Instant, основанный на этом моменте времени с добавленными указанными миллисекундами, не null
Throws:
DateTimeException - если результат превышает максимальное или минимальное значение момента времени
ArithmeticException - если происходит переполнение числовых значений

plusNanos

public Instant plusNanos(long nanosToAdd)
Возвращает копию этого момента времени с добавлением указанной продолжительности в наносекундах.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
nanosToAdd - наносекунды для добавления, положительные или отрицательные
Returns:
Instant, основанный на этом моменте времени с добавленными указанными наносекундами, не null
Throws:
DateTimeException - если результат превышает максимальное или минимальное значение момента времени
ArithmeticException - если происходит переполнение числовых значений

minus

public Instant minus(TemporalAmount amountToSubtract)
Возвращает копию этого момента времени с вычитанием указанного значения.

Это возвращает Instant, основанный на этом, с вычитанием указанного значения. Значение обычно является Duration, но может быть любого другого типа, реализующего интерфейс TemporalAmount.

Вычисление делегируется объекту значения вызовом TemporalAmount.subtractFrom(Temporal). Реализация значения свободна реализовывать вычитание как угодно, но обычно она обращается к minus(long, TemporalUnit). Обратитесь к документации реализации значения, чтобы определить, можно ли его успешно вычесть.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
minus в интерфейсе Temporal
Parameters:
amountToSubtract - значение для вычитания, не null
Returns:
Instant, основанный на этом моменте времени с выполненным вычитанием, не null
Throws:
DateTimeException - если вычитание невозможно
ArithmeticException - если происходит переполнение числовых значений

minus

public Instant minus(long amountToSubtract, TemporalUnit unit)
Возвращает копию этого момента времени с вычитанием указанного значения.

Это возвращает Instant, основанный на этом, со значением в терминах вычтенной единицы. Если невозможно вычесть значение, потому что единица не поддерживается или по какой-либо другой причине, выбрасывается исключение.

Этот метод эквивалентен plus(long, TemporalUnit) с отрицательным значением. Смотрите этот метод для полного описания того, как работает добавление, и, следовательно, вычитание.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Specified by:
minus в интерфейсе Temporal
Parameters:
amountToSubtract - количество единицы для вычитания из результата, может быть отрицательным
unit - единица количества для вычитания, не null
Returns:
Instant, основанный на этом моменте времени с вычтенным указанным значением, не null
Throws:
DateTimeException - если вычитание невозможно
UnsupportedTemporalTypeException - если единица не поддерживается
ArithmeticException - если происходит переполнение числовых значений

minusSeconds

public Instant minusSeconds(long secondsToSubtract)
Возвращает копию этого момента времени с вычитанием указанной продолжительности в секундах.

Этот экземпляр неизменяемый и не изменяется этим вызовом метода.

Parameters:
secondsToSubtract - секунды для вычитания, положительные или отрицательные
Returns:
Instant, основанный на этом моменте времени с вычтенными указанными секундами, не null
Throws:
DateTimeException - если результат превышает максимальное или минимальное значение момента времени
ArithmeticException - если происходит переполнение числовых значений

minusMillis

public Instant minusMillis(long millisToSubtract)
Возвращает копию этого момента времени, из которого вычтено указанное количество миллисекунд.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
millisToSubtract - миллисекунды для вычитания, положительные или отрицательные
Returns:
объект Instant, основанный на этом моменте времени с вычтенными миллисекундами, не null
Throws:
DateTimeException - если результат выходит за пределы максимального или минимального момента времени
ArithmeticException - если произошел переполнение чисел

minusNanos

public Instant minusNanos(long nanosToSubtract)
Возвращает копию этого момента времени, из которого вычтено указанное количество наносекунд.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
nanosToSubtract - наносекунды для вычитания, положительные или отрицательные
Returns:
объект Instant, основанный на этом моменте времени с вычтенными наносекундами, не null
Throws:
DateTimeException - если результат выходит за пределы максимального или минимального момента времени
ArithmeticException - если произошел переполнение чисел

query

public <R> R query(TemporalQuery<R> query)
Запрашивает этот момент времени с использованием указанного запроса.

Запрашивает этот момент времени с использованием указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Прочитайте документацию запроса, чтобы понять, каким будет результат этого метода.

Результат этого метода получается путем вызова метода TemporalQuery.queryFrom(TemporalAccessor) на указанном запросе, передав this в качестве аргумента.

Specified by:
query в интерфейсе TemporalAccessor
Type Parameters:
R - тип результата
Parameters:
query - запрос для вызова, не null
Returns:
результат запроса, может быть null (определяется запросом)
Throws:
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);
 

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Specified by:
adjustInto в интерфейсе TemporalAdjuster
Parameters:
temporal - целевой объект для настройки, не null
Returns:
настроенный объект, не null
Throws:
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 в качестве первого аргумента и преобразованный входной объект времени в качестве второго аргумента.

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Specified by:
until в интерфейсе Temporal
Parameters:
endExclusive - конечная дата, исключая, которая преобразуется в Instant, не null
unit - единица измерения, не null
Returns:
количество времени между этим моментом времени и конечным моментом времени
Throws:
DateTimeException - если количество времени невозможно рассчитать или конечный объект времени невозможно преобразовать в Instant
UnsupportedTemporalTypeException - если единица не поддерживается
ArithmeticException - если произошел переполнение чисел

until

public Duration until(Instant endExclusive)
Вычисляет разницу до другого момента времени.

Начальная и конечная точки - это this и указанный момент времени. Результат будет отрицательным, если конец предшествует началу. Вызов этого метода эквивалентен Duration.between(this, endExclusive).

Этот объект неизменяемый и не изменяется в результате вызова этого метода.

Parameters:
endExclusive - конечный момент времени, исключая, не null
Returns:
длительность от этого момента времени до указанного момента времени Instant
Since:
23
See Also:
  • Duration.between(Temporal, Temporal)

atOffset

public OffsetDateTime atOffset(ZoneOffset offset)
Объединяет этот момент времени со смещением, чтобы создать OffsetDateTime.

Возвращает OffsetDateTime, сформированный из этого момента времени со смещением от UTC/Гринвича. Если момент времени слишком большой, чтобы поместиться в дату-время со смещением, будет выброшено исключение.

Этот метод эквивалентен OffsetDateTime.ofInstant(this, offset).

Parameters:
offset - смещение для объединения, не null
Returns:
дата-время со смещением, сформированная из этого момента времени и указанного смещения, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон

atZone

public ZonedDateTime atZone(ZoneId zone)
Объединяет этот момент времени с часовым поясом, чтобы создать ZonedDateTime.

Возвращает ZonedDateTime, сформированный из этого момента времени в указанном часовом поясе. Если момент времени слишком большой, чтобы поместиться в дату-время с часовым поясом, будет выброшено исключение.

Этот метод эквивалентен ZonedDateTime.ofInstant(this, zone).

Parameters:
zone - часовой пояс для объединения, не null
Returns:
дата-время с часовым поясом, сформированная из этого момента времени и указанного часового пояса, не null
Throws:
DateTimeException - если результат выходит за поддерживаемый диапазон

toEpochMilli

public long toEpochMilli()
Преобразует этот момент времени в количество миллисекунд от эпохи 1970-01-01T00:00:00Z.

Если этот момент времени представляет точку на временной шкале, которая слишком далеко расположена в будущем или прошлом, чтобы поместиться в long миллисекунд, то генерируется исключение.

Если этот момент времени имеет точность больше, чем миллисекунда, то при преобразовании любая избыточная информация о точности будет отброшена так, как если бы количество наносекунд было подвергнуто целочисленному делению на миллион.

Returns:
количество миллисекунд с момента эпохи 1970-01-01T00:00:00Z
Throws:
ArithmeticException - если произошло переполнение чисел

compareTo

public int compareTo(Instant otherInstant)
Сравнивает этот момент времени с указанным моментом времени.

Сравнение основано на позиции моментов времени на временной шкале. Оно «совместимо с equals», как определено в Comparable.

Specified by:
compareTo в интерфейсе Comparable<Instant>
Parameters:
otherInstant - другой момент времени для сравнения, не null
Returns:
значение компаратора, которое меньше нуля, если этот момент времени предшествует otherInstant, равно нулю, если они равны, или больше нуля, если этот момент времени следует после otherInstant
Throws:
NullPointerException - если otherInstant равно null
See Also:
  • isBefore(java.time.Instant)
  • isAfter(java.time.Instant)

isAfter

public boolean isAfter(Instant otherInstant)
Проверяет, следует ли этот момент времени после указанного момента времени.

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

Parameters:
otherInstant - другой момент времени для сравнения, не null
Returns:
true, если этот момент времени следует после указанного момента времени
Throws:
NullPointerException - если otherInstant равно null

isBefore

public boolean isBefore(Instant otherInstant)
Проверяет, предшествует ли этот момент времени указанному моменту времени.

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

Parameters:
otherInstant - другой момент времени для сравнения, не null
Returns:
true, если этот момент времени предшествует указанному моменту времени
Throws:
NullPointerException - если otherInstant равно null

equals

public boolean equals(Object other)
Проверяет, равен ли этот момент времени указанному моменту времени.

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

Overrides:
equals в классе Object
Parameters:
other - другой момент времени, null возвращает false
Returns:
true, если другой момент времени равен этому
See Also:
  • Object.hashCode()
  • HashMap

hashCode

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

toString

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

Используемый формат совпадает с DateTimeFormatter.ISO_INSTANT.

Overrides:
toString в классе Object
Returns:
представление этого момента времени в формате ISO-8601, не null

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/Instant.html

Spec-Zone.ru

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