GetDay: примеры (JAVASCRIPT)

Метод getDay в JavaScript: руководство с примерами
Раздел: Дата и время, Методы
getDay: Number

Описание метода getDay()

Метод getDay() является частью объекта Date в JavaScript. Он применяется для получения порядкового номера дня недели из указанной даты, вычисляемого по местному времени.

Метод не принимает никаких аргументов.

Возвращаемое значение — целое число в диапазоне от 0 до 6, где:

  • 0 соответствует воскресенью.
  • 1 — понедельнику.
  • 2 — вторнику.
  • 3 — среде.
  • 4 — четвергу.
  • 5 — пятнице.
  • 6 — субботе.

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

Простые примеры использования

Получение дня недели для текущей даты:

let today = new Date();
console.log(today.getDay());
// Результат зависит от текущего дня.
// Например, если сегодня среда, выведет: 3

Определение дня недели для конкретной даты:

let specificDate = new Date('2024-12-25');
console.log(specificDate.getDay());
// 25 декабря 2024 года — среда.
// Результат: 3

Проверка значения для воскресенья:

let sunday = new Date('2024-01-07');
console.log(sunday.getDay());
// Результат: 0

Похожие методы в JavaScript

  • getUTCDay() — возвращает день недели по всемирному координированному времени (UTC). Используется, когда важна независимость от локального часового пояса.
  • Методы toLocaleDateString() с параметром weekday позволяют получить локализованное текстовое название дня недели. Предпочтительны для непосредственного отображения информации пользователю.
  • Библиотеки, такие как Moment.js или date-fns, предлагают более расширенные функции для работы с днями недели, включая локализацию и арифметику дат.

Частые ошибки

1. Ожидание, что номер дня соответствует стандарту ISO (где понедельник — 1). Это приводит к логическим ошибкам.

let d = new Date('2024-01-07'); // Воскресенье
let isMonday = d.getDay() === 1; // Ложное утверждение
console.log(isMonday);
false

2. Попытка вызвать метод у переменной, которая не является объектом Date.

let notDate = '2024-01-01';
console.log(notDate.getDay());
// TypeError: notDate.getDay is not a function

3. Забывают, что метод возвращает число, а не строку с названием дня. Для отображения названия требуется дополнительное преобразование.

История изменений

Метод getDay() присутствует в JavaScript с первой версии ECMAScript (ES1) 1997 года. Его поведение, включая диапазон возвращаемых значений (0-6), оставалось стабильным во всех последующих редакциях стандарта (ES2, ES3, ES5, ES6/ES2015 и далее). Современные версии языка не вносили изменений в работу данного метода.

Расширенные сценарии применения

Определение типа дня (рабочий/выходной):

Пример javascript
function isWeekend(date) {
  let day = date.getDay();
  return day === 0 || day === 6;
}
console.log(isWeekend(new Date('2024-12-28'))); // Суббота
console.log(isWeekend(new Date('2024-12-25'))); // Среда
true
false

Получение локализованного имени дня недели:

Пример javascript
let date = new Date('2024-12-25');
let dayNames = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'];
console.log(dayNames[date.getDay()]);
// Или используя Intl:
console.log(new Intl.DateTimeFormat('ru-RU', { weekday: 'long'}).format(date));
Ср
среда

Вычисление даты следующего понедельника:

Пример javascript
function getNextMonday(date) {
  let result = new Date(date);
  let day = result.getDay();
  let daysUntilMonday = day === 1 ? 7 : (8 - day) % 7;
  result.setDate(result.getDate() + daysUntilMonday);
  return result;
}
let someDate = new Date('2024-12-25');
console.log(getNextMonday(someDate).toDateString());
Mon Dec 30 2024

Группировка массива дат по дням недели:

Пример javascript
let dates = [
  new Date('2024-12-25'),
  new Date('2024-12-26'),
  new Date('2024-12-28')
];
let grouped = {};
dates.forEach(d => {
  let day = d.getDay();
  if (!grouped[day]) grouped[day] = [];
  grouped[day].push(d.toDateString());
});
console.log(grouped);
{
  '3': [ 'Wed Dec 25 2024' ],
  '4': [ 'Thu Dec 26 2024' ],
  '6': [ 'Sat Dec 28 2024' ]
}

Аналоги в других языках программирования

PHP: Функция date('w') или date('N'). Первая возвращает 0-6 (0-воскресенье), вторая — 1-7 (1-понедельник).

echo date('w', strtotime('2024-12-25')); // 3
3

Python: Метод weekday() объекта datetime возвращает 0-6 (0-понедельник). Метод isoweekday() возвращает 1-7 (1-понедельник).

from datetime import datetime
dt = datetime(2024, 12, 25)
print(dt.weekday()) # 2
2

MySQL: Функция DAYOFWEEK() возвращает 1-7 (1-воскресенье), а WEEKDAY() — 0-6 (0-понедельник).

SELECT DAYOFWEEK('2024-12-25'); -- 4
4

C (стандартная библиотека): Используется структура tm и поле tm_wday (0-6, 0-воскресенье) после функции localtime().

JS getDay function comments

En
GetDay Returns the day of the week (0-6) for the specified date