Spec-Zone.ru › OpenJDK 21

Класс 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.

Это класс, основанный на значениях (value-based); программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать экземпляры для синхронизации, иначе может произойти непредсказуемое поведение. Например, в будущей версии синхронизация может быть нарушена. Для сравнений следует использовать метод 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, усеченную до указанной единицы.
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
Минимальный поддерживаемый момент, '-1000000000-01-01T00:00Z'. Его может использовать приложение как момент «далёкого прошлого».

На год раньше минимального LocalDateTime. Это обеспечивает достаточные значения для обработки диапазона ZoneOffset, которые влияют на момент помимо местного времени. Значение также выбрано таким образом, что значение года помещается в int.

MAX

public static final Instant MAX
Максимальный поддерживаемый момент, '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 если нет

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 в качестве аргумента. Возможность получения значения и то, что оно представляет, определяется полем.

Specified by:
get в интерфейсе TemporalAccessor
Parameters:
field - поле для получения, не null
Returns:
значение для поля
Throws:
DateTimeException - если значение для поля получить невозможно или оно находится вне допустимого диапазона для поля
UnsupportedTemporalTypeException - если поле не поддерживается или диапазон значений превышает int
ArithmeticException - если происходит переполнение числового типа

getLong

public long getLong(TemporalField field)
Получает значение указанного поля из этого момента времени в виде long.

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

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

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

Specified by:
getLong в интерфейсе TemporalAccessor
Parameters:
field - поле для получения, не null
Returns:
значение для поля
Throws:
DateTimeException - если значение для поля получить невозможно
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - если происходит переполнение числового типа

getEpochSecond

public long getEpochSecond()
Возвращает количество секунд с эпохи Java 1970-01-01T00:00:00Z.

Счётчик эпохи в секундах представляет собой просто возрастающее количество секунд, где 0-ая секунда — это 1970-01-01T00:00:00Z. Часть наносекунд возвращается методом getNano().

Returns:
количество секунд с эпохи 1970-01-01T00:00:00Z

getNano

public int getNano()
Возвращает количество наносекунд, следующих после начала секунды.

Значение наносекунд секунды представляет собой общее количество наносекунд, начиная со секунды, возвращаемой методом getEpochSecond().

Returns:
количество наносекунд в секунде, всегда положительное, не превышает 999 999 999

with

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

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

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

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

Specified by:
with в интерфейсе Temporal
Parameters:
adjuster - корректировщик для использования, не null
Returns:
скопированное значение, основанное на this с выполненной корректировкой, не null
Throws:
DateTimeException - если корректировка не может быть выполнена
ArithmeticException - если происходит переполнение числового типа

with

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

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

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

  • NANO_OF_SECOND - Возвращает скопированное значение с указанным значением наносекунд. Значение эпохи в секундах останется неизменным.
  • MICRO_OF_SECOND - Возвращает скопированное значение с заменой значения наносекунд на значение микросекунд, умноженное на 1000. Значение эпохи в секундах останется неизменным.
  • MILLI_OF_SECOND - Возвращает скопированное значение с заменой значения наносекунд на значение миллисекунд, умноженное на 1 000 000. Значение эпохи в секундах останется неизменным.
  • INSTANT_SECONDS - Возвращает скопированное значение с указанным значением эпохи в секундах. Значение наносекунд останется неизменным.

Во всех случаях, если новое значение выходит за допустимый диапазон значений для поля, будет выброшено исключение DateTimeException.

Все остальные ChronoField экземпляры вызовут исключение UnsupportedTemporalTypeException.

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

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

Specified by:
with в интерфейсе Temporal
Parameters:
field - поле для установки в результате, не null
newValue - новое значение поля в результате
Returns:
скопированное значение, основанное на this с установленным указанным полем, не null
Throws:
DateTimeException - если поле нельзя установить
UnsupportedTemporalTypeException - если поле не поддерживается
ArithmeticException - если происходит переполнение числового типа

truncatedTo

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

Усечение момента времени возвращает копию оригинала с полями, меньшими, чем указанная единица измерения, установленным в ноль. Поля вычисляются на основе использования смещения UTC, как показано в toString. Например, усечение с помощью единицы измерения MINUTES округлится вниз до ближайшей минуты, установив секунды и наносекунды в ноль.

Единица измерения должна иметь длительность, которая делится на длительность стандартного дня без остатка. Это включает все предоставляемые единицы времени в ChronoUnit и DAYS. Другие единицы измерения вызывают исключение.

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

Parameters:
unit - единица измерения для усечения, не null
Returns:
скопированное значение, основанное на этом моменте времени с усечённым временем, не null
Throws:
DateTimeException - если единица измерения не подходит для усечения
UnsupportedTemporalTypeException - если единица измерения не поддерживается

plus

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

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

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

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

Specified by:
plus в интерфейсе Temporal
Parameters:
amountToAdd - значение для добавления, не null
Returns:
скопированное значение, основанное на этом моменте времени с произведённым добавлением, не 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) с количеством, умноженным на 43200 (12 часов).
  • DAYS - Возвращает копию Instant с добавленным указанным числом дней. Это эквивалентно plusSeconds(long) с количеством, умноженным на 86400 (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 - если происходит переполнение чисел

запрос

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

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(java.time.Instant)
  • isAfter(java.time.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(java.lang.Object)

toString

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

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

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

© 1993, 2023, 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/21/docs/api/java.base/java/time/Instant.html

Spec-Zone.ru

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