Spec-Zone.ru › JavaScript

Temporal.PlainMonthDay

Базовая Ограниченная доступность

Эта функция не является Базовой, потому что она не работает в некоторых наиболее широко используемых браузерах.

Объект Temporal.PlainMonthDay представляет месяц и день календарной даты без года или часового пояса; например, событие в календаре, которое повторяется каждый год и происходит в течение всего дня. Он фундаментально представлен как календарная дата ISO 8601 с полями года, месяца и дня и связанной календарной системой. Год используется для устранения неоднозначности месяца-дня в не-ISO календарных системах.

Описание

PlainMonthDay по сути является частью месяца-дня объекта Temporal.PlainDate без года. Поскольку значение месяца-дня может меняться из года в год (например, существует ли он, или каков месяц-день следующего дня), этот объект сам по себе не предоставляет большого функционала, такого как сравнение, сложение или вычитание. У него даже нет свойства month, потому что индекс месяца не имеет смысла без года (например, два месяца из двух лет с одинаковым индексом могут иметь разные названия в случае високосных месяцев).

Формат RFC 9557

Объекты PlainMonthDay могут быть сериализованы и разобраны с использованием формата RFC 9557, расширения формата ISO 8601 / RFC 3339. Строка имеет следующий вид (пробелы предназначены только для удобочитаемости и не должны присутствовать в фактической строке):

YYYY-MM-DD [u-ca=calendar_id]
YYYY Необязательно
Либо четырехзначное число, либо шестизначное число со знаком + или -. Оно требуется для не-ISO календарей и необязательно в противном случае. Если опущено, вы можете либо заменить YYYY- на -- (так что строка выглядит как --MM-DD или --MMDD), либо опустить часть YYYY- полностью (так что строка выглядит как MM-DD или MMDD). Обратите внимание, что фактически хранимый опорный год может отличаться от того, который вы предоставляете, но представленный месяц-день тот же. См. Temporal.PlainMonthDay.from() для получения дополнительной информации.
MM
Двузначное число от 01 до 12.
DD
Двузначное число от 01 до 31. Компоненты YYYY, MM и DD могут быть разделены - или ничем.
[u-ca=calendar_id] Необязательно
Замените calendar_id на используемый календарь. См. Intl.supportedValuesOf() для списка часто поддерживаемых типов календарей. По умолчанию используется [u-ca=iso8601]. Может иметь критический флаг, если ключ предваряется !: например, [!u-ca=iso8601]. Этот флаг обычно сообщает другим системам, что его нельзя игнорировать, если они его не поддерживают. Парсер Temporal выдаст ошибку, если аннотации содержат две или более аннотаций календаря, и одна из них является критической. Обратите внимание, что YYYY-MM-DD всегда интерпретируется как календарная дата ISO 8601, а затем преобразуется в указанный календарь.

В качестве входных данных вы можете опционально включить время, смещение и идентификатор часового пояса, в том же формате, что и PlainDateTime, но они будут проигнорированы. Другие аннотации в формате [key=value] также игнорируются, и они не должны иметь критического флага.

При сериализации вы можете настроить, отображать ли ID календаря и добавлять ли для него критический флаг.

Конструктор

Temporal.PlainMonthDay() Экспериментально
Создает новый объект Temporal.PlainMonthDay путем непосредственной подачи базовых данных.

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

Temporal.PlainMonthDay.from()
Создает новый объект Temporal.PlainMonthDay из другого объекта Temporal.PlainMonthDay, объекта со свойствами месяца и дня, или строки RFC 9557.

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

Эти свойства определены в Temporal.PlainMonthDay.prototype и являются общими для всех экземпляров Temporal.PlainMonthDay.

Temporal.PlainMonthDay.prototype.calendarId
Возвращает строку, представляющую календарь, используемый для интерпретации внутренней даты ISO 8601.
Temporal.PlainMonthDay.prototype.constructor
Функция-конструктор, которая создала объект экземпляра. Для экземпляров Temporal.PlainMonthDay начальным значением является конструктор Temporal.PlainMonthDay().
Temporal.PlainMonthDay.prototype.day
Возвращает положительное целое число, представляющее 1-базовый индекс дня в месяце этой даты, который является тем же номером дня, который вы увидели бы в календаре. Зависит от календаря. Обычно начинается с 1 и является непрерывным, но не всегда.
Temporal.PlainMonthDay.prototype.monthCode
Возвращает специфичную для календаря строку, представляющую месяц этой даты. Зависит от календаря. Обычно это M плюс двузначный номер месяца. Для високосных месяцев это код предыдущего месяца, за которым следует L. Если високосный месяц является первым месяцем года, код — M00L.
Temporal.PlainMonthDay.prototype[Symbol.toStringTag]
Начальное значение свойства [Symbol.toStringTag] — это строка "Temporal.PlainMonthDay". Это свойство используется в Object.prototype.toString().

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

Temporal.PlainMonthDay.prototype.equals()
Возвращает true, если этот месяц-день эквивалентен по значению другому месяцу-дню (в форме, преобразуемой Temporal.PlainMonthDay.from()), и false в противном случае. Они сравниваются как по их значениям даты, так и по их календарям.
Temporal.PlainMonthDay.prototype.toJSON()
Возвращает строку, представляющую этот месяц-день в том же формате RFC 9557, что и вызов toString(). Предназначен для неявного вызова с помощью JSON.stringify().
Temporal.PlainMonthDay.prototype.toLocaleString()
Возвращает строку с зависящим от языка представлением этого месяца-дня.
Temporal.PlainMonthDay.prototype.toPlainDate()
Возвращает новый объект Temporal.PlainDate, представляющий этот месяц-день и предоставленный год в той же календарной системе.
Temporal.PlainMonthDay.prototype.toString()
Возвращает строку, представляющую этот месяц-день в формате RFC 9557.
Temporal.PlainMonthDay.prototype.valueOf()
Вызывает TypeError, что предотвращает неявное преобразование в примитивы экземпляров Temporal.PlainMonthDay при использовании в арифметических операциях или операциях сравнения.
Temporal.PlainMonthDay.prototype.with()
Возвращает новый объект Temporal.PlainMonthDay, представляющий этот месяц-день с некоторыми полями, замененными новыми значениями.

Примеры

Получение следующего наступления праздника

// Chinese New Years are on 1/1 in the Chinese calendar
const chineseNewYear = Temporal.PlainMonthDay.from({
  monthCode: "M01",
  day: 1,
  calendar: "chinese",
});
const currentYear = Temporal.Now.plainDateISO().withCalendar("chinese").year;
let nextCNY = chineseNewYear.toPlainDate({ year: currentYear });
if (Temporal.PlainDate.compare(nextCNY, Temporal.Now.plainDateISO()) <= 0) {
  nextCNY = nextCNY.add({ years: 1 });
}
console.log(
  `The next Chinese New Year is on ${nextCNY.withCalendar("iso8601").toLocaleString()}`,
);

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

Спецификация
Temporal
# sec-temporal-plainmonthday-objects

Совместимость с браузерами

Настольные Мобильные Серверные
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
PlainMonthDay
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
PlainMonthDay
Нет
Нет
139
Нет
Нет
Нет
139
Нет
Нет
Нет
Нет
Нет
?
2.7
26.0.0
calendarId
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
day
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
equals
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
from
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
monthCode
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
toJSON
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
toLocaleString
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
toPlainDate
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
toString
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
valueOf
144
144
139
128
превью
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0
with
144
144
139
128
предварительная версия
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0

Смотрите также

  • Temporal
  • Temporal.PlainDate
  • Temporal.PlainYearMonth

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainMonthDay

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API