JavaScript объект Temporal.PlainMonthDay

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

Temporal.PlainMonthDay представляет месяц и день без года. Он подходит для ежегодных дат: дней рождения, праздников и годовщин.

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

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

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

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

Показать браузеры
Совместимостьjavascript.builtins.Temporal.PlainMonthDay
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
PlainMonthDay✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
new PlainMonthDay()✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
calendarId✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
day✓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×
monthCode✓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×
toPlainDate✓144✓144✓139✓128✓preview✓144✓139✓95××✓144×
toString✓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.PlainMonthDay.from(item, options);
new Temporal.PlainMonthDay(month, day, calendar, referenceYear);

Для строки '--12-31' или '12-31' и объекта { month: 12, day: 31 } удобнее from().

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

Параметры создания Temporal.PlainMonthDay
ПараметрОписание
itemСтрока ISO 8601 вида --ММ-ДД, объект полей или другое значение Temporal. Обязателен для from().
optionsНеобязательный параметр overflow: 'constrain' (по умолчанию) ограничивает значения допустимым диапазоном, 'reject' выдаёт ошибку.
monthМесяц: от 1 до 12. Обязателен для конструктора.
dayДень месяца. Обязателен для конструктора; 29 февраля допустимо.
calendarКалендарь; по умолчанию iso8601.
referenceYearСлужебный год для проверки дня; по умолчанию 1972 (високосный).

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

ECMAScript: Temporal.PlainMonthDay.

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

Создаётся новый Temporal.PlainMonthDay. Некорректная строка вызывает RangeError. У PlainMonthDay нет арифметики и статического compare(): порядок ежегодных дат зависит от года. Чтобы вычислять, вызовите toPlainDate({ year }). Для 29 февраля в невисокосном году день ограничивается 28-м.

Свойства Temporal.PlainMonthDay

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

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

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

Свойства экземпляра Temporal.PlainMonthDay
СвойствоОписание
calendarIdИдентификатор календаря, например "iso8601".
monthCodeКод месяца, например "M02". Свойства month нет: в некоторых календарях номер месяца зависит от года.
dayДень месяца, начиная с 1.

Методы Temporal.PlainMonthDay

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

Статические методы Temporal.PlainMonthDay
МетодОписание
Temporal.PlainMonthDay.from(item, options)Создаёт значение из строки ISO 8601, объекта полей или другого значения Temporal.

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

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

Методы экземпляра Temporal.PlainMonthDay
МетодОписание
with(fields, options)Новое значение с заменёнными месяцем или днём.
equals(other)true, если совпадают месяц, день и календарь.
toPlainDate(fields)PlainDate в указанном году, например toPlainDate({ year: 2027 }).
toString(options)Строка ISO 8601. Параметры задают точность и вывод частей записи.
toJSON()То же, что toString() без параметров; вызывается в JSON.stringify().
toLocaleString(locales, options)Строка для пользователя с учётом языка, как у Intl.DateTimeFormat.
valueOf()Всегда выдаёт TypeError: операторы <, > и + к Temporal не применяются. Для проверки равенства используйте equals().

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

Ежегодная дата в разные годы

Замените дату на 29 февраля и год на високосный. Сравните результат toPlainDate().

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
if (typeof Temporal === 'undefined') {
    console.log('Этот браузер пока не поддерживает Temporal.')
} else {
    const birthday = Temporal.PlainMonthDay.from('--02-29')
    console.log('Код месяца и день:', birthday.monthCode, birthday.day)
    for (const year of [2027, 2028]) {
        console.log(year, birthday.toPlainDate({ year }).toString())
    }
    const holiday = Temporal.PlainMonthDay.from({ month: 12, day: 31 })
    console.log('Совпадает:', holiday.equals(Temporal.PlainMonthDay.from('12-31')))
}

В невисокосном году toPlainDate() заменяет 29 февраля на 28-е.

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