Spec-Zone.ru › JavaScript

Temporal.PlainDate.prototype.dayOfWeek

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

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

Свойство-акцессор dayOfWeek экземпляров Temporal.PlainDate возвращает положительное целое число, представляющее 1-основанный индекс дня недели для этой даты. Дни недели нумеруются последовательно от 1 до daysInWeek, причем каждое число соответствует своему названию. Оно зависит от календаря. 1 обычно представляет понедельник в календаре, даже если локали, использующие календарь, могут считать другой день первым днем недели (см. Intl.Locale.prototype.getWeekInfo()).

Все обычно поддерживаемые календари используют 7-дневные недели, и в целом можно ожидать, что это свойство вернет одно и то же значение для одной и той же даты в разных календарях.

Акцессор-сеттер dayOfWeek — это undefined. Вы не можете изменить это свойство напрямую. Чтобы создать новый объект Temporal.PlainDate с желаемым новым значением dayOfWeek, используйте метод add() или subtract() с соответствующим количеством days.

Примеры

Использование dayOfWeek

const date = Temporal.PlainDate.from("2021-07-01");
console.log(date.dayOfWeek); // 4; Thursday

const date2 = Temporal.PlainDate.from("2021-07-01[u-ca=chinese]");
console.log(date2.dayOfWeek); // 4

Изменение dayOfWeek

PlainDate не поддерживает прямое изменение dayOfWeek. Чтобы изменить день недели, вам сначала нужно определить разницу в днях до желаемого дня недели, а затем использовать add или subtract для соответствующей корректировки даты. Например, чтобы перейти на пятницу этой недели (независимо от того, до или после):

function getDayInSameWeek(date, destDayOfWeek) {
  return date.add({ days: destDayOfWeek - date.dayOfWeek });
}

console.log(
  getDayInSameWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-07-02
console.log(
  getDayInSameWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-02

Чтобы перейти к следующей пятнице:

function getNextDayInWeek(date, destDayOfWeek) {
  const distance = destDayOfWeek - date.dayOfWeek;
  return date.add({
    days: distance < 0 ? date.daysInWeek + distance : distance,
  });
}

console.log(
  getNextDayInWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-07-02
console.log(
  getNextDayInWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-09

Чтобы перейти к предыдущей пятнице:

function getPreviousDayInWeek(date, destDayOfWeek) {
  const distance = date.dayOfWeek - destDayOfWeek;
  return date.subtract({
    days: distance < 0 ? date.daysInWeek + distance : distance,
  });
}

console.log(
  getPreviousDayInWeek(Temporal.PlainDate.from("2021-07-01"), 5).toString(),
); // 2021-06-25
console.log(
  getPreviousDayInWeek(Temporal.PlainDate.from("2021-07-03"), 5).toString(),
); // 2021-07-02

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

Спецификация
Temporal
# sec-get-temporal.plaindate.prototype.dayofweek

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

Десктопные Мобильные Серверные
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
dayOfWeek
144
144
139
128
предварительная версия
144
139
95
Нет
Нет
144
Нет
1.4.0
2.7
26.0.0

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

  • Temporal.PlainDate
  • Temporal.PlainDate.prototype.with()
  • Temporal.PlainDate.prototype.add()
  • Temporal.PlainDate.prototype.subtract()
  • Temporal.PlainDate.prototype.day
  • Temporal.PlainDate.prototype.dayOfYear
  • Temporal.PlainDate.prototype.daysInWeek
  • Temporal.PlainDate.prototype.weekOfYear
  • Temporal.PlainDate.prototype.yearOfWeek

© 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/dayOfWeek

Spec-Zone.ru

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