JavaScript объект Temporal.PlainMonthDay
Определение и применение
Temporal.PlainMonthDay представляет месяц и день без года. Он подходит для ежегодных дат: дней рождения, праздников и годовщин.
Поддержка браузерами
Спецификация: proposal-temporal
Нет поддержки: Safari iOS, Samsung Android, WebView iOS.
Отдельные значения (12) поддерживаются не везде — смотрите таблицу.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 синтаксис
Temporal.PlainMonthDay.from(item, options);
new Temporal.PlainMonthDay(month, day, calendar, referenceYear);Для строки '--12-31' или '12-31' и объекта { month: 12, day: 31 } удобнее from().
Значения параметров
| Параметр | Описание |
|---|---|
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.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().
| Свойство | Описание |
|---|---|
calendarId | Идентификатор календаря, например "iso8601". |
monthCode | Код месяца, например "M02". Свойства month нет: в некоторых календарях номер месяца зависит от года. |
day | День месяца, начиная с 1. |
Методы Temporal.PlainMonthDay
Статические методы
| Метод | Описание |
|---|---|
Temporal.PlainMonthDay.from(item, options) | Создаёт значение из строки ISO 8601, объекта полей или другого значения Temporal. |
Методы экземпляра
Методы не изменяют исходный объект: вычисления возвращают новое значение.
| Метод | Описание |
|---|---|
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
<p>Результат выполнения выводится в консоль.</p>
main.js
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.