JavaScript объект Temporal.PlainTime

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

Temporal.PlainTime представляет время суток без даты и часового пояса. Он подходит для расписаний «каждый день в 09:00», часов работы и будильников.

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

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

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

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

Показать браузеры
Совместимостьjavascript.builtins.Temporal.PlainTime
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
PlainTime✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
new PlainTime()✓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×
equals✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
from✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
hour✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
microsecond✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
millisecond✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
minute✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
nanosecond✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
round✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
second✓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×
until✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
valueOf✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
with✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×

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

JavaScript синтаксис

JavaScript
Temporal.PlainTime.from(item, options);
new Temporal.PlainTime(hour, minute, second, millisecond, microsecond, nanosecond);

Для строки '09:30' или объекта { hour: 9, minute: 30 } удобнее from(). Все аргументы конструктора необязательны и по умолчанию равны 0.

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

Параметры создания Temporal.PlainTime
ПараметрОписание
itemСтрока ISO 8601 со временем, объект полей или другое значение Temporal со временем. Обязателен для from().
optionsНеобязательный параметр overflow: 'constrain' (по умолчанию) ограничивает значения допустимым диапазоном, 'reject' выдаёт ошибку.
hourЧас: от 0 до 23.
minuteМинуты: от 0 до 59.
secondСекунды: от 0 до 59.
millisecondМиллисекунды, microsecond и nanosecond — доли секунды от 0 до 999.

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

ECMAScript: Temporal.PlainTime.

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

Создаётся новый Temporal.PlainTime. Некорректная строка вызывает RangeError. Арифметика PlainTime идёт по кругу: add({ hours: 2 }) к 23:00 даёт 01:00 без перехода на следующий день. Чтобы учесть дату, используйте PlainDateTime или ZonedDateTime.

Свойства Temporal.PlainTime

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

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

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

Свойства экземпляра Temporal.PlainTime
СвойствоОписание
hourЧас: от 0 до 23.
minuteМинуты: от 0 до 59.
secondСекунды: от 0 до 59.
millisecondМиллисекунды: от 0 до 999.
microsecondМикросекунды: от 0 до 999.
nanosecondНаносекунды: от 0 до 999.

Методы Temporal.PlainTime

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

Статические методы Temporal.PlainTime
МетодОписание
Temporal.PlainTime.from(item, options)Создаёт время из строки ISO 8601, объекта полей или другого значения Temporal со временем.
Temporal.PlainTime.compare(one, two)Сравнивает время суток: -1, 0 или 1. Подходит для Array.prototype.sort().

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

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

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

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

Время работы и переход через полночь

Измените время открытия и закрытия. Проверьте смену, которая заканчивается после полуночи.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
if (typeof Temporal === 'undefined') {
    console.log('Этот браузер пока не поддерживает Temporal.')
} else {
    const opens = Temporal.PlainTime.from('09:00')
    const closes = Temporal.PlainTime.from('18:30')
    const now = Temporal.PlainTime.from('17:45')
    const open = Temporal.PlainTime.compare(now, opens) >= 0 && Temporal.PlainTime.compare(now, closes) < 0
    console.log('Открыто:', open)
    console.log('До закрытия:', now.until(closes).toString())
    const shiftEnd = Temporal.PlainTime.from('23:00').add({ hours: 2 })
    console.log('Смена до:', shiftEnd.toString())
    console.log('Округление:', Temporal.PlainTime.from('17:47:31').round({ smallestUnit: 'minute', roundingIncrement: 15 }).toString())
}

Метод until() не переходит через полночь: для смены после 00:00 храните дату вместе со временем.

См. также обзор Temporal, PlainDate и документацию Temporal.PlainTime.