JavaScript объект Temporal.Instant

Определение и применение

Temporal.Instant представляет точный момент времени без часового пояса и календаря. Он подходит для логов, отметок времени в API и сроков, отсчитываемых в часах: например, «ссылка действует 48 часов».

Поддержка браузерами

Спецификация: proposal-temporal

Нет поддержки: Safari iOS, Samsung Android, WebView iOS.

Отдельные значения (18) поддерживаются не везде — смотрите таблицу.

Показать браузеры
Совместимостьjavascript.builtins.Temporal.Instant
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
Instant✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
new Instant()✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
add✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
compare✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
epochMilliseconds✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
epochNanoseconds✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
equals✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
from✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
fromEpochMilliseconds✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
fromEpochNanoseconds✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
round✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
since✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
subtract✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
toJSON✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
toLocaleString✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
toString✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
toZonedDateTimeISO✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
until✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
valueOf✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
Temporal.Instant.from(item);
Temporal.Instant.fromEpochMilliseconds(epochMilliseconds);
new Temporal.Instant(epochNanoseconds);

Строка для from() должна содержать смещение UTC или Z: без него момент не определён. Текущий момент возвращает Temporal.Now.instant().

Значения параметров

Параметры создания Temporal.Instant
ПараметрОписание
itemСтрока ISO 8601 со смещением, например '2026-10-27T09:30:00Z', или другой Instant.
epochMillisecondsЧисло миллисекунд от Unix-эпохи, как у Date.prototype.getTime().
epochNanosecondsЧисло наносекунд от Unix-эпохи, тип bigint. Обязательно для конструктора.

Спецификация

ECMAScript: Temporal.Instant.

Возвращаемое значение и особенности

Создаётся новый Temporal.Instant. Свойства epochMilliseconds и epochNanoseconds возвращают момент числом. Метод toZonedDateTimeISO() показывает этот момент в выбранном часовом поясе, а toString() по умолчанию выводит его в UTC.

Методы add() и subtract() принимают только часы и меньшие единицы. Дни, месяцы и годы вызывают RangeError: их длина зависит от календаря и часового пояса. Для календарных вычислений перейдите к Temporal.ZonedDateTime.

Свойства Temporal.Instant

Свойства конструктора Temporal.Instant
СвойствоОписание
Temporal.Instant.prototypeПрототип экземпляров, содержащий их методы и свойства.
Temporal.Instant.lengthЧисло обязательных параметров конструктора: 1.
Temporal.Instant.nameСтрока "Instant".
Temporal.Instant.prototype.constructorСсылка на конструктор Temporal.Instant.
Temporal.Instant.prototype[Symbol.toStringTag]Строка "Temporal.Instant"; её выводит Object.prototype.toString().

Свойства экземпляра

Свойства доступны только для чтения: чтобы изменить значение, создайте новое через add(), subtract() или round().

Свойства экземпляра Temporal.Instant
СвойствоОписание
epochMillisecondsМомент в миллисекундах от Unix-эпохи, как у Date.prototype.getTime(); дробная часть отбрасывается вниз.
epochNanosecondsМомент в наносекундах от Unix-эпохи, тип bigint.

Методы Temporal.Instant

Статические методы

Статические методы Temporal.Instant
МетодОписание
Temporal.Instant.from(item)Создаёт момент из строки ISO 8601 со смещением UTC или из другого Instant.
Temporal.Instant.fromEpochMilliseconds(epochMilliseconds)Создаёт момент из миллисекунд от Unix-эпохи.
Temporal.Instant.fromEpochNanoseconds(epochNanoseconds)Создаёт момент из наносекунд от Unix-эпохи (bigint).
Temporal.Instant.compare(one, two)Сравнивает моменты: -1, 0 или 1. Подходит для Array.prototype.sort().

Методы экземпляра

Методы не изменяют исходный объект: вычисления возвращают новое значение.

Методы экземпляра Temporal.Instant
МетодОписание
add(duration)Новое значение, сдвинутое вперёд на длительность. Принимает только часы и меньшие единицы.
subtract(duration)Новое значение, сдвинутое назад на длительность. Принимает только часы и меньшие единицы.
until(other, options)Duration от этого значения до other; параметры largestUnit, smallestUnit и округление.
since(other, options)Длительность от other до этого значения; обратная операция к until().
round(options)Новый момент, округлённый до единицы smallestUnit (от hour до nanosecond).
equals(other)true, если моменты совпадают.
toZonedDateTimeISO(timeZone)ZonedDateTime этого момента в часовом поясе и календаре ISO 8601.
toString(options)Строка ISO 8601. Параметры задают точность и вывод частей записи.
toJSON()То же, что toString() без параметров; вызывается в JSON.stringify().
toLocaleString(locales, options)Строка для пользователя с учётом языка, как у Intl.DateTimeFormat.
valueOf()Всегда выдаёт TypeError: операторы <, > и + к Temporal не применяются. Используйте compare() или equals().

Примеры, попробуйте сами

Instant, Date и часовые пояса

Измените момент или часовой пояс. Сравните миллисекунды для Date и местное представление одного момента.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
if (typeof Temporal === 'undefined') {
    console.log('Этот браузер пока не поддерживает Temporal.')
} else {
    const instant = Temporal.Instant.from('2026-10-27T09:30:00Z')
    console.log('Миллисекунды для Date:', instant.epochMilliseconds)
    console.log('Из Date:', Temporal.Instant.fromEpochMilliseconds(new Date('2026-10-27T09:30:00Z').getTime()).toString())
    console.log('Москва:', instant.toZonedDateTimeISO('Europe/Moscow').toString())
    console.log('Нью-Йорк:', instant.toZonedDateTimeISO('America/New_York').toString())
    console.log('Строка со смещением:', instant.toString({ timeZone: 'Asia/Tokyo' }))
}

Чтобы перейти от Date к Temporal, передайте getTime() в fromEpochMilliseconds(). Обратно — new Date(instant.epochMilliseconds).

Срок действия в часах

Измените число часов и время проверки. Попробуйте округлить срок до часа и прибавить дни.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
if (typeof Temporal === 'undefined') {
    console.log('Этот браузер пока не поддерживает Temporal.')
} else {
    const created = Temporal.Instant.from('2026-10-27T09:30:15.250Z')
    const deadline = created.add({ hours: 48 })
    console.log('Срок:', deadline.toString())
    console.log('До минуты:', deadline.round({ smallestUnit: 'minute', roundingMode: 'floor' }).toString())
    const checked = Temporal.Instant.from('2026-10-28T21:00:00Z')
    console.log('Осталось:', checked.until(deadline, { largestUnit: 'hours' }).toString())
    // У Instant нет календаря, поэтому дни и месяцы прибавлять нельзя.
    try {
        created.add({ days: 1 })
    } catch (error) {
        console.log('add({ days: 1 }):', error.name)
    }
}

Метод round() с roundingMode: 'floor' отбрасывает секунды, не сдвигая срок позже. Метод until() возвращает Temporal.Duration.

См. также обзор Temporal, объект Date, конвертер Unix timestamp и документацию Temporal.Instant.