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 и далее). Современные версии языка не вносили изменений в работу данного метода.
Расширенные сценарии применения
Определение типа дня (рабочий/выходной):
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
Получение локализованного имени дня недели:
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));Ср среда
Вычисление даты следующего понедельника:
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
Группировка массива дат по дням недели:
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')); // 33
Python: Метод weekday() объекта datetime возвращает 0-6 (0-понедельник). Метод isoweekday() возвращает 1-7 (1-понедельник).
from datetime import datetime
dt = datetime(2024, 12, 25)
print(dt.weekday()) # 22
MySQL: Функция DAYOFWEEK() возвращает 1-7 (1-воскресенье), а WEEKDAY() — 0-6 (0-понедельник).
SELECT DAYOFWEEK('2024-12-25'); -- 44
C (стандартная библиотека): Используется структура tm и поле tm_wday (0-6, 0-воскресенье) после функции localtime().