Класс Instant
- Все реализуемые интерфейсы:
Serializable, Comparable<Instant>, Temporal, TemporalAccessor, TemporalAdjuster
public final class Instant extends Object implements Temporal, TemporalAdjuster, Comparable<Instant>, Serializable
Этот класс моделирует отдельную точку на временной шкале. Он может использоваться для записи временных меток событий в приложении.
Для представления диапазона момента времени требуется хранить число, превышающее long. Для этого класс хранит long, представляющее секунды эпохи, и int, представляющее наносекунды секунды, значение которого всегда находится в диапазоне от 0 до 999,999,999. Секунды эпохи отсчитываются от стандартной эпохи Java 1970-01-01T00:00:00Z; моменты после эпохи имеют положительные значения, а более ранние моменты — отрицательные. Для обеих составляющих — секунд эпохи и наносекунд — большее значение всегда соответствует более позднему моменту на временной шкале, чем меньшее.
Шкала времени
Продолжительность солнечных суток — это стандартная мера времени, используемая людьми. Традиционно сутки делятся на 24 часа по 60 минут, а каждая минута — на 60 секунд, что составляет 86400 секунд в сутках.
Современный отсчёт времени основан на атомных часах, которые точно определяют секунду СИ относительно переходов атома цезия. Продолжительность секунды СИ была определена как величина, очень близкая к 1/86400 суток.
К сожалению, из-за вращения Земли продолжительность суток меняется. Кроме того, со временем средняя продолжительность суток увеличивается, поскольку вращение Земли замедляется. В результате солнечные сутки в 2012 году немного длиннее 86400 секунд СИ. Фактическую продолжительность любых конкретных суток и величину замедления вращения Земли невозможно предсказать — их можно определить только измерением. Шкала времени UT1 точно отражает продолжительность суток, но становится доступна лишь через некоторое время после их окончания.
Шкала времени UTC — это стандартный способ объединить все дополнительные доли секунды из UT1 в целые секунды, называемые високосными секундами. В зависимости от изменений вращения Земли високосная секунда может быть добавлена или удалена. Таким образом, при необходимости UTC допускает продолжительность суток в 86399 или 86401 секунду СИ, чтобы сохранить соответствие суток положению Солнца.
Современная шкала времени UTC была введена в 1972 году вместе с понятием целых високосных секунд. В период с 1958 по 1972 год определение UTC было сложным: оно включало небольшие високосные доли секунды и изменения продолжительности условной секунды. По состоянию на 2012 год обсуждалось повторное изменение определения UTC с возможной отменой високосных секунд или введением других изменений.
Учитывая описанную выше сложность точного измерения времени, этот API Java определяет собственную шкалу времени — шкалу времени Java.
Шкала времени Java делит каждый календарный день ровно на 86400 частей, называемых секундами. Эти секунды могут отличаться от секунды СИ. Она близко соответствует фактически используемой международной гражданской шкале времени, определение которой время от времени меняется.
Для разных участков временной шкалы Java Time-Scale имеет несколько отличающиеся определения, каждое из которых основано на согласованной международной шкале времени, используемой в качестве основы гражданского времени. При изменении или замене согласованной на международном уровне шкалы времени для неё необходимо определить новый участок шкалы времени Java. Каждый участок должен удовлетворять следующим требованиям:
- шкала времени Java должна близко соответствовать лежащей в её основе международной гражданской шкале времени;
- шкала времени Java должна точно соответствовать международной гражданской шкале времени в полдень каждого дня;
- для шкалы времени Java должно быть точно определено соотношение с международной гражданской шкалой времени.
Для участка, начинающегося 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)
Проверяет, можно ли запросить у этого момента времени значение указанного поля. Если это не так, вызовы методов range, get и with(TemporalField, long) вызовут исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Поддерживаются следующие поля:
-
NANO_OF_SECOND -
MICRO_OF_SECOND -
MILLI_OF_SECOND -
INSTANT_SECONDS
ChronoField будет возвращено false. Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.isSupportedBy(TemporalAccessor) с передачей this в качестве аргумента. Поддержка поля определяется самим полем.
- Определено в:
-
isSupportedв интерфейсеTemporalAccessor - Параметры:
-
field— поле для проверки; для null возвращается false - Возвращает:
- true, если это поле поддерживается для данного момента времени; в противном случае false
isSupported
public boolean isSupported(TemporalUnit unit)
Проверяет, можно ли прибавить указанную единицу измерения к этому значению даты и времени или вычесть её из него. Если это не так, вызовы методов plus(long, TemporalUnit) и minus вызовут исключение.
Если единица измерения является ChronoUnit, запрос обрабатывается здесь. Поддерживаются следующие единицы измерения:
-
NANOS -
MICROS -
MILLIS -
SECONDS -
MINUTES -
HOURS -
HALF_DAYS -
DAYS
ChronoUnit будет возвращено false. Если единица измерения не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.isSupportedBy(Temporal) с передачей this в качестве аргумента. Поддержка единицы измерения определяется самой единицей.
- Определено в:
-
isSupportedв интерфейсеTemporal - Параметры:
-
unit— единица измерения для проверки; для null возвращается false - Возвращает:
- true, если единицу измерения можно прибавить или вычесть; в противном случае false
range
public ValueRange range(TemporalField field)
Объект диапазона задаёт минимальное и максимальное допустимые значения поля. Этот момент времени используется для повышения точности возвращаемого диапазона. Если вернуть диапазон невозможно, поскольку поле не поддерживается или по какой-либо другой причине, вызывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает соответствующие экземпляры диапазона. Для всех остальных экземпляров ChronoField будет вызвано исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.rangeRefinedBy(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения диапазона определяется самим полем.
- Определено в:
-
rangeв интерфейсеTemporalAccessor - Параметры:
-
field— поле, для которого нужно запросить диапазон, не null - Возвращает:
- диапазон допустимых значений поля, не null
- Вызывает исключение:
-
DateTimeException— если диапазон поля невозможно получить -
UnsupportedTemporalTypeException— если поле не поддерживается
get
public int get(TemporalField field)
int. Запрашивает у этого момента времени значение указанного поля. Возвращаемое значение всегда будет находиться в допустимом диапазоне значений поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, вызывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает допустимые значения на основе этого значения даты и времени, за исключением INSTANT_SECONDS, которое слишком велико для представления в виде int и вызывает DateTimeException. Для всех остальных экземпляров ChronoField будет вызвано исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и его смысл определяются самим полем.
- Определено в:
-
getв интерфейсеTemporalAccessor - Параметры:
-
field— поле для получения, не null - Возвращает:
- значение поля
- Вызывает исключение:
-
DateTimeException— если значение поля невозможно получить или оно выходит за пределы допустимого диапазона значений поля -
UnsupportedTemporalTypeException— если поле не поддерживается или диапазон значений превышаетint -
ArithmeticException— при переполнении числового значения
getLong
public long getLong(TemporalField field)
long. Запрашивает у этого момента времени значение указанного поля. Если вернуть значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, вызывается исключение.
Если поле является ChronoField, запрос обрабатывается здесь. Метод supported fields возвращает допустимые значения на основе этого значения даты и времени. Для всех остальных экземпляров ChronoField будет вызвано исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.getFrom(TemporalAccessor) с передачей this в качестве аргумента. Возможность получения значения и его смысл определяются самим полем.
- Определено в:
-
getLongв интерфейсеTemporalAccessor - Параметры:
-
field— поле для получения, не null - Возвращает:
- значение поля
- Вызывает исключение:
-
DateTimeException— если значение поля невозможно получить -
UnsupportedTemporalTypeException— если поле не поддерживается -
ArithmeticException— при переполнении числового значения
getEpochSecond
public long getEpochSecond()
Счётчик секунд эпохи представляет собой простой возрастающий счётчик секунд, где секунда 0 соответствует 1970-01-01T00:00:00Z. Часть в наносекундах возвращается методом getNano().
- Возвращает:
- количество секунд от эпохи 1970-01-01T00:00:00Z
getNano
public int getNano()
Значение наносекунды секунды показывает общее количество наносекунд, прошедших с секунды, возвращаемой методом getEpochSecond().
- Возвращает:
- количество наносекунд в секунде; всегда положительное и не превышающее 999,999,999
with
public Instant with(TemporalAdjuster adjuster)
Возвращает Instant, основанный на этом значении, с скорректированным моментом времени. Корректировка выполняется с помощью указанного объекта стратегии корректировки. Ознакомьтесь с документацией корректировщика, чтобы узнать, какая корректировка будет выполнена.
Результат этого метода получается вызовом метода TemporalAdjuster.adjustInto(Temporal) для указанного корректировщика с передачей this в качестве аргумента.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
adjuster— корректировщик для использования, не null - Возвращает:
- экземпляр
Instant, основанный наthisи скорректированный указанным образом, не null - Вызывает исключение:
-
DateTimeException— если корректировку невозможно выполнить -
ArithmeticException— при переполнении числового значения
with
public Instant with(TemporalField field, long newValue)
Возвращает Instant, основанный на этом значении, с изменённым значением указанного поля. Если установить значение невозможно, поскольку поле не поддерживается или по какой-либо другой причине, вызывается исключение.
Если поле является ChronoField, корректировка выполняется здесь. Поддерживаемые поля обрабатываются следующим образом:
-
NANO_OF_SECOND— возвращаетInstantс указанным значением наносекунды секунды. Секунда эпохи не изменяется. -
MICRO_OF_SECOND— возвращаетInstant, заменяя наносекунду секунды указанным значением микросекунды секунды, умноженным на 1 000. Секунда эпохи не изменяется. -
MILLI_OF_SECOND— возвращаетInstant, заменяя наносекунду секунды указанным значением миллисекунды секунды, умноженным на 1 000 000. Секунда эпохи не изменяется. -
INSTANT_SECONDS— возвращаетInstantс указанной секундой эпохи. Наносекунда секунды не изменяется.
Во всех случаях, если новое значение выходит за пределы допустимого диапазона значений поля, будет вызвано исключение DateTimeException.
Для всех остальных экземпляров ChronoField будет вызвано исключение UnsupportedTemporalTypeException.
Если поле не является ChronoField, результат этого метода получается вызовом TemporalField.adjustInto(Temporal, long) с передачей this в качестве аргумента. В этом случае поле определяет, нужно ли корректировать момент времени и каким образом.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
withв интерфейсеTemporal - Параметры:
-
field— поле, которое необходимо установить в результате, не null -
newValue— новое значение поля в результате - Возвращает:
- экземпляр
Instant, основанный наthis, с установленным указанным полем, не null - Вызывает исключение:
-
DateTimeException— если поле невозможно установить -
UnsupportedTemporalTypeException— если поле не поддерживается -
ArithmeticException— при переполнении числового значения
truncatedTo
public Instant truncatedTo(TemporalUnit unit)
Instant, усечённую до указанной единицы измерения. Усечение момента времени возвращает копию исходного значения, в которой поля, меньшие указанной единицы измерения, установлены в ноль. Поля вычисляются с учётом смещения UTC, как описано в toString. Например, усечение до MINUTES округляет значение вниз до ближайшей минуты, устанавливая секунды и наносекунды в ноль.
Длительность единицы измерения должна без остатка делить продолжительность стандартного дня. Сюда входят все предоставляемые единицы времени из ChronoUnit и DAYS. Для других единиц измерения вызывается исключение.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
unit— единица измерения, до которой следует усечь значение, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени и усечённый, не null - Вызывает исключение:
-
DateTimeException— если единица измерения недопустима для усечения -
UnsupportedTemporalTypeException— если единица измерения не поддерживается
plus
public Instant plus(TemporalAmount amountToAdd)
Возвращает Instant, основанный на этом значении, к которому прибавлена указанная величина. Обычно этой величиной является Duration, но ею может быть любой другой тип, реализующий интерфейс TemporalAmount.
Вычисление делегируется объекту величины вызовом TemporalAmount.addTo(Temporal). Реализация величины может выполнять сложение любым способом, однако обычно она вызывает plus(long, TemporalUnit). Ознакомьтесь с документацией реализации величины, чтобы определить, можно ли успешно прибавить её.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd— величина для прибавления, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени и дополненный указанной величиной, не null - Вызывает исключение:
-
DateTimeException— если сложение невозможно выполнить -
ArithmeticException— при переполнении числового значения
plus
public Instant plus(long amountToAdd, TemporalUnit unit)
Возвращает Instant, основанный на этом значении, к которому прибавлена указанная величина в единицах измерения. Если прибавить величину невозможно, поскольку единица измерения не поддерживается или по какой-либо другой причине, вызывается исключение.
Если поле является ChronoUnit, сложение выполняется здесь. Поддерживаемые поля обрабатываются следующим образом:
-
NANOS— возвращаетInstantс прибавленным указанным количеством наносекунд. Эквивалентно вызовуplusNanos(long). -
MICROS— возвращаетInstantс прибавленным указанным количеством микросекунд. Эквивалентно вызовуplusNanos(long), где величина умножена на 1 000. -
MILLIS— возвращаетInstantс прибавленным указанным количеством миллисекунд. Эквивалентно вызовуplusNanos(long), где величина умножена на 1 000 000. -
SECONDS— возвращаетInstantс прибавленным указанным количеством секунд. Эквивалентно вызовуplusSeconds(long). -
MINUTES— возвращаетInstantс прибавленным указанным количеством минут. Эквивалентно вызовуplusSeconds(long), где величина умножена на 60. -
HOURS— возвращаетInstantс прибавленным указанным количеством часов. Эквивалентно вызовуplusSeconds(long), где величина умножена на 3 600. -
HALF_DAYS— возвращаетInstantс прибавленным указанным количеством полусуток. Эквивалентно вызовуplusSeconds(long), где величина умножена на 43 200 (12 часов). -
DAYS— возвращаетInstantс прибавленным указанным количеством дней. Эквивалентно вызовуplusSeconds(long), где величина умножена на 86 400 (24 часа).
Для всех остальных экземпляров ChronoUnit будет вызвано исключение UnsupportedTemporalTypeException.
Если поле не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.addTo(Temporal, long) с передачей this в качестве аргумента. В этом случае единица измерения определяет, нужно ли выполнять сложение и каким образом.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
plusв интерфейсеTemporal - Параметры:
-
amountToAdd— количество единиц измерения, добавляемых к результату; может быть отрицательным -
unit— единица измерения добавляемой величины, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, к которому прибавлена указанная величина, не null - Вызывает исключение:
-
DateTimeException— если сложение невозможно выполнить -
UnsupportedTemporalTypeException— если единица измерения не поддерживается -
ArithmeticException— при переполнении числового значения
plusSeconds
public Instant plusSeconds(long secondsToAdd)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
secondsToAdd— количество добавляемых секунд, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, к которому прибавлено указанное количество секунд, не null - Вызывает исключение:
-
DateTimeException— если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException— при переполнении числового значения
plusMillis
public Instant plusMillis(long millisToAdd)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
millisToAdd— количество добавляемых миллисекунд, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, к которому прибавлено указанное количество миллисекунд, не null - Вызывает исключение:
-
DateTimeException— если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException— при переполнении числового значения
plusNanos
public Instant plusNanos(long nanosToAdd)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
nanosToAdd— количество добавляемых наносекунд, положительное или отрицательное - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, к которому прибавлено указанное количество наносекунд, не null - Вызывает исключение:
-
DateTimeException— если результат превышает максимальное или минимальное значение момента времени -
ArithmeticException— при переполнении числового значения
minus
public Instant minus(TemporalAmount amountToSubtract)
Возвращает Instant, основанный на этом значении, из которого вычтена указанная величина. Обычно этой величиной является Duration, но ею может быть любой другой тип, реализующий интерфейс TemporalAmount.
Вычисление делегируется объекту величины вызовом TemporalAmount.subtractFrom(Temporal). Реализация величины может выполнять вычитание любым способом, однако обычно она вызывает minus(long, TemporalUnit). Ознакомьтесь с документацией реализации величины, чтобы определить, можно ли успешно вычесть её.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract— величина для вычитания, не null - Возвращает:
- экземпляр
Instant, основанный на этом моменте времени, из которого вычтена указанная величина, не null - Вызывает исключение:
-
DateTimeException— если вычитание невозможно выполнить -
ArithmeticException— при переполнении числового значения
minus
public Instant minus(long amountToSubtract, TemporalUnit unit)
Возвращает Instant на основе этого момента времени, из которого вычтено количество в единицах указанной единицы измерения. Если вычесть это количество невозможно, поскольку единица измерения не поддерживается или по какой-либо другой причине, выбрасывается исключение.
Этот метод эквивалентен plus(long, TemporalUnit) с количеством, взятым с противоположным знаком. Полное описание того, как работает сложение и, следовательно, вычитание, приведено в документации к этому методу.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
minusв интерфейсеTemporal - Параметры:
-
amountToSubtract- количество единиц измерения, которое нужно вычесть из результата; может быть отрицательным -
unit- единица измерения количества, которое нужно вычесть; не null - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством; не null- Исключения:
-
DateTimeException- если вычитание невозможно -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при числовом переполнении
minusSeconds
public Instant minusSeconds(long secondsToSubtract)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
secondsToSubtract- количество секунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством секунд; не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального значения момента времени -
ArithmeticException- при числовом переполнении
minusMillis
public Instant minusMillis(long millisToSubtract)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
millisToSubtract- количество миллисекунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством миллисекунд; не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального значения момента времени -
ArithmeticException- при числовом переполнении
minusNanos
public Instant minusNanos(long nanosToSubtract)
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
nanosToSubtract- количество наносекунд для вычитания, положительное или отрицательное - Возвращает:
Instantна основе этого момента времени с вычтенным указанным количеством наносекунд; не null- Исключения:
-
DateTimeException- если результат выходит за пределы максимального или минимального значения момента времени -
ArithmeticException- при числовом переполнении
query
public <R> R query(TemporalQuery<R> query)
Этот момент времени запрашивается с помощью указанного объекта стратегии запроса. Объект TemporalQuery определяет логику получения результата. Чтобы понять, каким будет результат этого метода, ознакомьтесь с документацией к запросу.
Результат этого метода получается вызовом метода TemporalQuery.queryFrom(TemporalAccessor) для указанного запроса с передачей this в качестве аргумента.
- Определено в:
-
queryв интерфейсеTemporalAccessor - Параметры типа:
R- тип результата- Параметры:
-
query- запрос для выполнения; не null - Возвращает:
- результат запроса; может быть возвращено null (определяется запросом)
- Исключения:
-
DateTimeException- если выполнить запрос невозможно (определяется запросом) -
ArithmeticException- при числовом переполнении (определяется запросом)
adjustInto
public Temporal adjustInto(Temporal temporal)
Возвращает временной объект того же наблюдаемого типа, что и входной объект, но с моментом времени, изменённым на соответствующий этому.
Эта настройка эквивалентна двукратному использованию Temporal.with(TemporalField, long) с передачей в качестве полей ChronoField.INSTANT_SECONDS и ChronoField.NANO_OF_SECOND.
В большинстве случаев код будет понятнее, если изменить порядок вызовов и использовать Temporal.with(TemporalAdjuster):
// these two lines are equivalent, but the second approach is recommended temporal = thisInstant.adjustInto(temporal); temporal = temporal.with(thisInstant);
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
adjustIntoв интерфейсеTemporalAdjuster - Параметры:
-
temporal- целевой объект для настройки; не null - Возвращает:
- настроенный объект; не null
- Исключения:
-
DateTimeException- если выполнить настройку невозможно -
ArithmeticException- при числовом переполнении
until
public long until(Temporal endExclusive, TemporalUnit unit)
Вычисляет время между двумя объектами Instant в единицах одной TemporalUnit. Начальной и конечной точками являются this и указанный момент времени. Результат будет отрицательным, если конечная точка предшествует начальной. Вычисление возвращает целое число, представляющее количество полных единиц между двумя моментами времени. Переданный этому методу объект Temporal преобразуется в Instant с помощью from(TemporalAccessor). Например, количество секунд между двумя датами можно вычислить с помощью startInstant.until(endInstant, SECONDS).
Этот метод можно использовать двумя эквивалентными способами. Первый — вызвать данный метод. Второй — использовать TemporalUnit.between(Temporal, Temporal):
// these two lines are equivalent amount = start.until(end, SECONDS); amount = SECONDS.between(start, end);Выбор следует делать исходя из того, какой вариант делает код более понятным.
В этом методе вычисление реализовано для ChronoUnit. Поддерживаются единицы NANOS, MICROS, MILLIS, SECONDS, MINUTES, HOURS, HALF_DAYS и DAYS. Для других значений ChronoUnit будет выброшено исключение.
Если единица измерения не является ChronoUnit, результат этого метода получается вызовом TemporalUnit.between(Temporal, Temporal) с передачей this в качестве первого аргумента, а преобразованного входного временного объекта — в качестве второго аргумента.
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Определено в:
-
untilв интерфейсеTemporal - Параметры:
-
endExclusive- конечная дата, не включаемая в интервал; преобразуется вInstant; не null -
unit- единица измерения для вычисления количества; не null - Возвращает:
- время между этим моментом времени и конечным моментом
- Исключения:
-
DateTimeException- если количество невозможно вычислить или конечный временной объект невозможно преобразовать вInstant -
UnsupportedTemporalTypeException- если единица измерения не поддерживается -
ArithmeticException- при числовом переполнении
until
public Duration until(Instant endExclusive)
Duration до другого Instant. Начальной и конечной точками являются this и указанный момент времени. Результат будет отрицательным, если конечная точка предшествует начальной. Вызов этого метода эквивалентен вызову Duration.between(this,
endExclusive).
Этот экземпляр неизменяем и не изменяется при вызове данного метода.
- Параметры:
-
endExclusive- конечныйInstant, не включаемый в интервал; не null - Возвращает:
Durationот этогоInstantдо указанногоendExclusiveInstant- С версии:
- 23
- См. также:
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()
Если этот момент времени находится на временной шкале слишком далеко в будущем или прошлом, чтобы поместиться в 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 - См. также:
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)
Сравнение выполняется на основе положения моментов времени на временной шкале.
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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/Instant.html