Класс 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 должна иметь точно определённую связь с международной гражданской шкалой времени.
Для сегмента с 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 |
Настраивает указанный временной объект для этого момента. |
OffsetDateTime |
atOffset |
Объединяет этот момент с смещением для создания OffsetDateTime. |
ZonedDateTime |
atZone |
Объединяет этот момент с часовым поясом для создания ZonedDateTime. |
int |
compareTo |
Сравнивает этот момент с указанным моментом. |
boolean |
equals |
Проверяет, равен ли этот момент указанному моменту. |
static Instant |
from |
Получает экземпляр Instant из временного объекта. |
int |
get |
Получает значение указанного поля из этого момента как int. |
long |
getEpochSecond() |
Получает количество секунд с эпохи Java 1970-01-01T00:00:00Z. |
long |
getLong |
Получает значение указанного поля из этого момента как long. |
int |
getNano() |
Получает количество наносекунд, позже по временной шкале, с начала секунды. |
int |
hashCode() |
Возвращает хэш-код для этого момента. |
boolean |
isAfter |
Проверяет, следует ли этот момент после указанного момента. |
boolean |
isBefore |
Проверяет, предшествует ли этот момент указанному моменту. |
boolean |
isSupported |
Проверяет, поддерживается ли указанное поле. |
boolean |
isSupported |
Проверяет, поддерживается ли указанный единица измерения. |
Instant |
minus |
Возвращает копию этого момента с вычетом указанного значения. |
Instant |
minus |
Возвращает копию этого момента с вычетом указанного значения. |
Instant |
minusMillis |
Возвращает копию этого момента с вычетом указанной длительности в миллисекундах. |
Instant |
minusNanos |
Возвращает копию этого момента с вычетом указанной длительности в наносекундах. |
Instant |
minusSeconds |
Возвращает копию этого момента с вычетом указанной длительности в секундах. |
static Instant |
now() |
Получает текущий момент с системных часов. |
static Instant |
now |
Получает текущий момент с указанных часов. |
static Instant |
ofEpochMilli |
Получает экземпляр Instant, используя миллисекунды с эпохи 1970-01-01T00:00:00Z. |
static Instant |
ofEpochSecond |
Получает экземпляр Instant, используя секунды с эпохи 1970-01-01T00:00:00Z. |
static Instant |
ofEpochSecond |
Получает экземпляр Instant, используя секунды с эпохи 1970-01-01T00:00:00Z и наносекундную дробную часть секунды. |
static Instant |
parse |
Получает экземпляр Instant из текстовой строки, такой как 2007-12-03T10:15:30.00Z. |
Instant |
plus |
Возвращает копию этого момента с добавлением указанного значения. |
Instant |
plus |
Возвращает копию этого момента с добавлением указанного значения. |
Instant |
plusMillis |
Возвращает копию этого момента с добавлением указанной длительности в миллисекундах. |
Instant |
plusNanos |
Возвращает копию этого момента с добавлением указанной длительности в наносекундах. |
Instant |
plusSeconds |
Возвращает копию этого момента с добавлением указанной длительности в секундах. |
<R> R |
query |
Запрашивает этот момент с использованием указанного запроса. |
ValueRange |
range |
Получает диапазон допустимых значений для указанного поля. |
long |
toEpochMilli() |
Преобразует этот момент в количество миллисекунд с эпохи 1970-01-01T00:00:00Z. |
String |
toString() |
Строковое представление этого момента с использованием представления ISO-8601. |
Instant |
truncatedTo |
Возвращает копию этого Instant, усеченную до указанной единицы измерения. |
Duration |
until |
Вычисляет Duration до другого Instant. |
long |
until |
Вычисляет количество времени до другого момента в терминах указанной единицы измерения. |
Instant |
with |
Возвращает скорректированную копию этого момента. |
Instant |
with |
Возвращает копию этого момента с указанным полем, установленным на новое значение. |
Подробное описание полей
EPOCH
public static final Instant EPOCH
MIN
public static final Instant MIN
Instant, '-1000000000-01-01T00:00Z'. Может использоваться приложением для обозначения "далёкого прошлого". На один год раньше минимального значения LocalDateTime. Это обеспечивает достаточные значения для обработки диапазона ZoneOffset, которые влияют на момент, помимо локального времени. Значение также выбрано таким образом, чтобы значение года помещалось в int.
MAX
public static final Instant MAX
Instant, '1000000000-12-31T23:59:59.999999999Z'. Может использоваться приложением для обозначения "далёкого будущего". На один год позже максимального значения LocalDateTime. Это обеспечивает достаточные значения для обработки диапазона ZoneOffset, которые влияют на момент, помимо локального времени. Значение также выбрано таким образом, чтобы значение года помещалось в int.
Подробное описание методов
now
public static Instant now()
Для получения текущего момента будет запрошен system UTC clock.
Использование этого метода предотвращает возможность использования альтернативного источника времени для тестирования, так как часы фактически жёстко закодированы.
- Возвращает:
- текущий момент времени, используя системные часы, не null
now
public static Instant now(Clock clock)
Будет запрошен указанный объект часов для получения текущего времени.
Использование этого метода позволяет использовать альтернативные часы для тестирования. Альтернативные часы могут быть введены с помощью dependency injection.
- Параметры:
-
clock- используемые часы, не null - Возвращает:
- текущий момент времени, не null
ofEpochSecond
public static Instant ofEpochSecond(long epochSecond)
Instant, используя секунды от эпохи 1970-01-01T00:00:00Z. Поле наносекунд установлено в ноль.
- Параметры:
-
epochSecond- количество секунд от 1970-01-01T00:00:00Z - Возвращает:
- момент времени, не null
- Исключения:
-
DateTimeException- если момент времени превышает максимальное или минимальное значение
ofEpochSecond
public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
Instant, используя секунды от эпохи 1970-01-01T00:00:00Z и наносекундную дробную часть секунды. Этот метод позволяет передавать произвольное количество наносекунд. Фабрика изменит значения секунд и наносекунд, чтобы гарантировать, что хранимые наносекунды находятся в диапазоне от 0 до 999 999 999. Например, следующие значения приведут к точно такому же моменту времени:
Instant.ofEpochSecond(3, 1); Instant.ofEpochSecond(4, -999_999_999); Instant.ofEpochSecond(2, 1000_000_001);
- Параметры:
-
epochSecond- количество секунд от 1970-01-01T00:00:00Z -
nanoAdjustment- наносекундная корректировка к количеству секунд, положительная или отрицательная - Возвращает:
- момент времени, не null
- Исключения:
-
DateTimeException- если момент времени превышает максимальное или минимальное значение -
ArithmeticException- если происходит целочисленное переполнение
ofEpochMilli
public static Instant ofEpochMilli(long epochMilli)
Instant, используя миллисекунды от эпохи 1970-01-01T00:00:00Z. Секунды и наносекунды извлекаются из указанных миллисекунд.
- Параметры:
-
epochMilli- количество миллисекунд от 1970-01-01T00:00:00Z - Возвращает:
- момент времени, не null
from
public static Instant from(TemporalAccessor temporal)
Instant из временного объекта. Получает момент времени, основываясь на указанном временном объекте. TemporalAccessor представляет собой произвольный набор данных о дате и времени, который эта фабрика преобразует в экземпляр Instant.
Преобразование извлекает поля INSTANT_SECONDS и NANO_OF_SECOND.
Этот метод соответствует сигнатуре функционального интерфейса TemporalQuery, позволяя использовать его в качестве запроса через ссылку на метод, Instant::from.
- Параметры:
-
temporal- временной объект для преобразования, не null - Возвращает:
- момент времени, не null
- Исключения:
-
DateTimeException- если невозможно выполнить преобразование вInstant
parse
public static Instant parse(CharSequence text)
Instant из текстовой строки, такой как 2007-12-03T10:15:30.00Z. Строка должна представлять собой допустимый момент времени в UTC и анализируется с помощью DateTimeFormatter.ISO_INSTANT.
- Параметры:
-
text- текст для анализа, не null - Возвращает:
- проанализированный момент времени, не null
- Исключения:
-
DateTimeParseException- если текст не может быть проанализирован
isSupported
public boolean isSupported(TemporalField field)
Проверяет, можно ли запросить этот момент времени для указанного поля. Если 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()
Счётчик эпохи секунд — это простой счётчик секунд, где секунда 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:
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()
Если этот момент времени представляет точку на временной шкале, которая слишком далеко расположена в будущем или прошлом, чтобы поместиться в 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:
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)
Сравнение основано на позиции моментов времени на временной шкале.
hashCode
toString
public String toString()
Используемый формат совпадает с DateTimeFormatter.ISO_INSTANT.
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/time/Instant.html