Temporal.PlainDate
Базовый уровень Ограниченная доступность
Эта функция не входит в базовый уровень, поскольку не работает в некоторых наиболее широко используемых браузерах.
Объект Temporal.PlainDate представляет календарную дату (дату без времени и часового пояса); например, событие в календаре, которое длится весь день независимо от часового пояса, в котором оно происходит. В основе объекта лежит календарная дата в формате ISO 8601 с полями года, месяца и дня и связанной с ней календарной системой.
Описание
Объект PlainDate — это, по сути, часть даты объекта Temporal.PlainDateTime, из которой удалена информация о времени. Поскольку дата и время практически не взаимодействуют друг с другом, здесь описана общая информация о свойствах даты.
Формат RFC 9557
Объекты PlainDate можно сериализовать и анализировать с помощью формата RFC 9557 — расширения формата ISO 8601 / RFC 3339. Строка имеет следующий вид (пробелы добавлены только для удобства чтения и не должны присутствовать в фактической строке):
YYYY-MM-DD [u-ca=calendar_id]
-
YYYY - Четырёхзначное число или шестизначное число со знаком
+или-. -
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] также игнорируются, и для них нельзя указывать критический флаг.
При сериализации можно настроить отображение идентификатора календаря и добавление к нему критического флага.
Ограничение недопустимой даты
Методы Temporal.PlainDate.from(), Temporal.PlainDate.prototype.with(), Temporal.PlainDate.prototype.add(), Temporal.PlainDate.prototype.subtract() и их аналоги в других объектах Temporal позволяют создавать даты с использованием свойств, зависящих от календаря. Компоненты даты могут выходить за допустимые пределы. В календаре ISO это всегда является переполнением, например, если месяц больше 12 или число превышает количество дней в месяце. Для исправления достаточно ограничить значение максимально допустимым. В других календарях недопустимый случай может быть сложнее. При использовании параметра overflow: "constrain" недопустимые даты исправляются следующим образом:
- Если указанного дня не существует, но месяц существует: выбирается ближайший день в том же месяце. Если в этом месяце есть два равноудалённых дня, выбирается более поздний.
- Если месяц является високосным и не существует в данном году: выбирается другая дата в соответствии с культурными традициями пользователей этого календаря. Обычно это будет тот же день месяца, предшествующего или следующего месяцу, который обычно приходился бы на високосный год.
- Если месяц не существует в данном году по другим причинам: выбирается ближайшая дата, которая всё ещё приходится на тот же год. Если в этом году есть две равноудалённые даты, выбирается более поздняя.
- Если указанного года не существует: выбирается ближайшая дата в другом году. Если есть две равноудалённые даты, выбирается более поздняя.
Конструктор
-
Temporal.PlainDate()Экспериментальная функция - Создаёт новый объект
Temporal.PlainDate, напрямую задавая исходные данные.
Статические методы
-
Temporal.PlainDate.compare() - Возвращает число (-1, 0 или 1), указывающее, предшествует ли первая дата второй, совпадает с ней или следует за ней. Эквивалентно сравнению полей года, месяца и дня исходных дат ISO 8601.
-
Temporal.PlainDate.from() - Создаёт новый объект
Temporal.PlainDateиз другого объектаTemporal.PlainDate, объекта со свойствами даты или строки RFC 9557.
Свойства экземпляра
Эти свойства определены в Temporal.PlainDate.prototype и доступны всем экземплярам Temporal.PlainDate.
-
Temporal.PlainDate.prototype.calendarId - Возвращает строку, представляющую календарь, используемый для интерпретации внутренней даты ISO 8601.
-
Temporal.PlainDate.prototype.constructor - Функция-конструктор, создавшая объект экземпляра. Для экземпляров
Temporal.PlainDateисходным значением является конструкторTemporal.PlainDate(). -
Temporal.PlainDate.prototype.day - Возвращает положительное целое число, представляющее порядковый номер дня этой даты в месяце, начиная с 1, то есть тот же номер дня, который отображается в календаре. Зависит от календаря. Обычно отсчёт начинается с 1 и ведётся непрерывно, но не всегда.
-
Temporal.PlainDate.prototype.dayOfWeek - Возвращает положительное целое число, представляющее порядковый номер дня этой даты в неделе, начиная с 1. Дни недели нумеруются последовательно от
1доdaysInWeek, причём каждому числу соответствует своё название. Зависит от календаря. Обычно 1 соответствует понедельнику в календаре, даже если в локалях, использующих этот календарь, первым днём недели считается другой день (см.Intl.Locale.prototype.getWeekInfo()). -
Temporal.PlainDate.prototype.dayOfYear - Возвращает положительное целое число, представляющее порядковый номер дня этой даты в году, начиная с 1. Первый день этого года —
1, а последний —daysInYear. Зависит от календаря. -
Temporal.PlainDate.prototype.daysInMonth - Возвращает положительное целое число, представляющее количество дней в месяце этой даты. Зависит от календаря.
-
Temporal.PlainDate.prototype.daysInWeek - Возвращает положительное целое число, представляющее количество дней в неделе этой даты. Зависит от календаря. В календаре ISO 8601 это значение всегда равно 7, но в других календарных системах оно может меняться от недели к неделе.
-
Temporal.PlainDate.prototype.daysInYear - Возвращает положительное целое число, представляющее количество дней в году этой даты. Зависит от календаря. В календаре ISO 8601 это значение равно 365, а в високосном году — 366.
-
Temporal.PlainDate.prototype.era - Возвращает строчную строку, зависящую от календаря и представляющую эру этой даты, или
undefined, если в календаре не используются эры (например, в ISO 8601).eraиeraYearвместе однозначно определяют год в календаре так же, какyear. Зависит от календаря. Для григорианского календаря это либо"ce", либо"bce". -
Temporal.PlainDate.prototype.eraYear - Возвращает неотрицательное целое число, представляющее год этой даты в пределах эры, или
undefined, если в календаре не используются эры (например, в ISO 8601). Отсчёт лет обычно начинается с 1 (чаще) или с 0, а годы в эре могут уменьшаться со временем (например, в григорианском календаре до нашей эры).eraиeraYearвместе однозначно определяют год в календаре так же, какyear. Зависит от календаря. -
Temporal.PlainDate.prototype.inLeapYear - Возвращает логическое значение, указывающее, приходится ли эта дата на високосный год. В високосном году дней больше, чем в обычном, из-за дополнительного дня или месяца. Зависит от календаря.
-
Temporal.PlainDate.prototype.month - Возвращает положительное целое число, представляющее порядковый номер месяца этой даты в году, начиная с 1. Первый месяц этого года —
1, а последний —monthsInYear. Зависит от календаря. Обратите внимание: в отличие отDate.prototype.getMonth(), отсчёт индекса начинается с 1. Если в календаре есть високосные месяцы, то у месяца с тем жеmonthCodeзначение индексаmonthможет различаться в разные годы. -
Temporal.PlainDate.prototype.monthCode - Возвращает строку, зависящую от календаря и представляющую месяц этой даты. Зависит от календаря. Обычно это
Mи двухзначный номер месяца. Для високосных месяцев используется код предыдущего месяца с добавлениемL. Если високосный месяц является первым месяцем года, кодом будетM00L. -
Temporal.PlainDate.prototype.monthsInYear - Возвращает положительное целое число, представляющее количество месяцев в году этой даты. Зависит от календаря. В календаре ISO 8601 это значение всегда равно 12, но в других календарных системах оно может отличаться.
-
Temporal.PlainDate.prototype.weekOfYear - Возвращает положительное целое число, представляющее порядковый номер недели этой даты в году
yearOfWeek, начиная с 1, илиundefined, если в календаре нет чётко определённой системы недель. Первая неделя года —1. Зависит от календаря. Обратите внимание: в ISO 8601 первые и последние несколько дней года могут относиться к последней неделе предыдущего года или первой неделе следующего года. -
Temporal.PlainDate.prototype.year - Возвращает целое число, представляющее количество лет этой даты относительно начала года эпохи, определяемого календарём. Зависит от календаря. Обычно год 1 — это либо первый год последней эры, либо год
0001по ISO 8601. Если эпоха начинается в середине года, значение этого года будет одинаковым как до, так и после даты начала эры. -
Temporal.PlainDate.prototype.yearOfWeek - Возвращает целое число, представляющее год, соответствующий значению
weekOfYearэтой даты, илиundefined, если в календаре нет чётко определённой системы недель. Зависит от календаря. Обычно это год даты, но в ISO 8601 первые и последние несколько дней года могут относиться к последней неделе предыдущего года или первой неделе следующего года, из-за чего значениеyearOfWeekотличается на 1. -
Temporal.PlainDate.prototype[Symbol.toStringTag] - Исходное значение свойства
[Symbol.toStringTag]— строка"Temporal.PlainDate". Это свойство используется вObject.prototype.toString().
Методы экземпляра
-
Temporal.PlainDate.prototype.add() - Возвращает новый объект
Temporal.PlainDate, представляющий эту дату, сдвинутую вперёд на заданную длительность (в формате, преобразуемом с помощьюTemporal.Duration.from()). -
Temporal.PlainDate.prototype.equals() - Возвращает
true, если значение этой даты эквивалентно значению другой даты (в формате, преобразуемом с помощьюTemporal.PlainDate.from()), иfalseв противном случае. Даты сравниваются как по значениям дат, так и по календарям. -
Temporal.PlainDate.prototype.since() - Возвращает новый объект
Temporal.Duration, представляющий длительность от другой даты (в формате, преобразуемом с помощьюTemporal.PlainDate.from()) до этой даты. Длительность положительна, если другая дата предшествует этой, и отрицательна, если следует за ней. -
Temporal.PlainDate.prototype.subtract() - Возвращает новый объект
Temporal.PlainDate, представляющий эту дату, сдвинутую назад на заданную длительность (в формате, преобразуемом с помощьюTemporal.Duration.from()). -
Temporal.PlainDate.prototype.toJSON() - Возвращает строку, представляющую эту дату в том же формате RFC 9557, что и вызов
toString(). Предназначен для неявного вызова методомJSON.stringify(). -
Temporal.PlainDate.prototype.toLocaleString() - Возвращает строку, представляющую эту дату с учётом языковых особенностей.
-
Temporal.PlainDate.prototype.toPlainDateTime() - Возвращает новый объект
Temporal.PlainDateTime, представляющий эту дату и заданное время в той же календарной системе. -
Temporal.PlainDate.prototype.toPlainMonthDay() - Возвращает новый объект
Temporal.PlainMonthDay, представляющийmonthCodeиdayэтой даты в той же календарной системе. -
Temporal.PlainDate.prototype.toPlainYearMonth() - Возвращает новый объект
Temporal.PlainYearMonth, представляющийyearиmonthэтой даты в той же календарной системе. -
Temporal.PlainDate.prototype.toString() - Возвращает строку, представляющую эту дату в формате RFC 9557.
-
Temporal.PlainDate.prototype.toZonedDateTime() - Возвращает новый объект
Temporal.ZonedDateTime, представляющий эту дату, заданное время и заданный часовой пояс в той же календарной системе. -
Temporal.PlainDate.prototype.until() - Возвращает новый объект
Temporal.Duration, представляющий длительность от этой даты до другой даты (в формате, преобразуемом с помощьюTemporal.PlainDate.from()). Длительность положительна, если другая дата следует за этой, и отрицательна, если предшествует ей. -
Temporal.PlainDate.prototype.valueOf() - Выбрасывает исключение
TypeError, не позволяя экземплярамTemporal.PlainDateнеявно преобразовываться в примитивы при использовании в арифметических операциях или операциях сравнения. -
Temporal.PlainDate.prototype.with() - Возвращает новый объект
Temporal.PlainDate, представляющий эту дату с заменой некоторых полей новыми значениями. -
Temporal.PlainDate.prototype.withCalendar() - Возвращает новый объект
Temporal.PlainDate, представляющий эту дату, интерпретируемую в новой календарной системе.
Спецификации
| Спецификация |
|---|
| Temporal # sec-temporal-plaindate-objects |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | Серверы | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | Bun | Deno | Node.js | |
PlainDate |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PlainDate |
Нет |
Нет |
139 |
Нет |
Нет |
Нет |
139 |
Нет |
Нет |
Нет |
Нет |
Нет |
? |
2.7 |
26.0.0 |
add |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
calendarId |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
compare |
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 |
dayOfWeek |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
dayOfYear |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
daysInMonth |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
daysInWeek |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
daysInYear |
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 |
era |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
eraYear |
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 |
inLeapYear |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
month |
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 |
monthsInYear |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
since |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
subtract |
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 |
toPlainDateTime |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
toPlainMonthDay |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
toPlainYearMonth |
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 |
toZonedDateTime |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
until |
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 |
weekOfYear |
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 |
withCalendar |
144 |
144 |
139Календариislamic, islamic-rgsa и islamic-umalqura недоступны. См. ошибка 1950425 и ошибка 1954138. |
128 |
предварительная версия |
144 |
139Календариislamic, islamic-rgsa и islamic-umalqura недоступны. См. ошибка 1950425 и ошибка 1954138. |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
year |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
yearOfWeek |
144 |
144 |
139 |
128 |
предварительная версия |
144 |
139 |
95 |
Нет |
Нет |
144 |
Нет |
1.4.0 |
2.7 |
26.0.0 |
См. также
TemporalTemporal.DurationTemporal.PlainDateTimeTemporal.PlainMonthDayTemporal.PlainYearMonthTemporal.ZonedDateTime
© 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/PlainDate