Класс 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.
Это класс, основанный на значениях (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 |
Настраивает указанный временной объект для этого мгновения. |
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, усеченную до указанной единицы. |
long |
until |
Вычисляет интервал времени до другого мгновения в терминах указанной единицы. |
Instant |
with |
Возвращает скорректированную копию этого мгновения. |
Instant |
with |
Возвращает копию этого мгновения с указанным полем, установленным на новое значение. |
Подробное описание полей
EPOCH
public static final Instant EPOCH
MIN
public static final Instant MIN
На год раньше минимального LocalDateTime. Это обеспечивает достаточные значения для обработки диапазона ZoneOffset, которые влияют на момент помимо местного времени. Значение также выбрано таким образом, что значение года помещается в int.
MAX
public static final Instant MAX
На год позже максимального 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()
Счётчик эпохи в секундах представляет собой просто возрастающее количество секунд, где 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()
Если этот момент времени представляет точку на временной шкале, слишком удаленную в будущем или прошлом, чтобы уместиться в 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)
Сравнение основано на позиции моментов времени на временной шкале.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
other- другой момент времени, null возвращает false - Возвращает:
- true, если другой момент времени равен этому
- См. также:
hashCode
public int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- соответствующий хэш-код
- См. также:
toString
public String toString()
Использованный формат такой же, как у 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