GetDate: примеры (JAVASCRIPT)
getDate: NumberОсновы метода getDate()
Метод getDate() является частью объекта Date в JavaScript. Он применяется для получения порядкового числа дня месяца из конкретной даты. Значение возвращается в виде целого числа от 1 до 31.
Этот метод часто используется при форматировании дат для вывода на экран, валидации форм, расчете интервалов и в любых других задачах, где требуется извлечь день месяца из объекта даты.
Синтаксис метода прост и не требует аргументов: dateObj.getDate(), где dateObj – это экземпляр объекта Date.
Метод возвращает целое число от 1 до 31, соответствующее дню месяца, который хранится в объекте Date с учетом локального времени системы.
Базовые примеры использования
Создадим объект Date и получим из него день месяца.
const now = new Date();
console.log(now.getDate());// Результат будет зависеть от текущей даты. // Например, если сегодня 25 октября: 25
Использование с конкретной заданной датой.
const specificDate = new Date('2023-12-31');
console.log(specificDate.getDate());31
Метод работает корректно с високосными годами.
const leapYearDate = new Date('2024-02-29');
console.log(leapYearDate.getDate());29
Похожие методы в JavaScript
Для работы с различными компонентами даты существуют другие методы:
getUTCDate()– возвращает день месяца по всемирному координированному времени (UTC). Отличие отgetDate()проявляется при работе с пользователями в разных часовых поясах.getDay()– возвращает день недели (от 0 для воскресенья до 6 для субботы). Важно не путать его сgetDate().getMonth()– возвращает номер месяца (от 0 до 11).getFullYear()– возвращает год.
Метод getUTCDate() предпочтительнее использовать в приложениях, где критична независимость от локального времени пользователя, например, в серверных логиках или международных системах. getDate() подходит для отображения даты, понятной пользователю в его локальном времени.
Распространенные ошибки
1. Путаница между getDate() (день месяца) и getDay() (день недели).
const date = new Date('2023-10-25'); // Среда
console.log(date.getDay()); // Ожидали 25, но получаем 3 (для среды)3
2. Ожидание, что getDate() возвращает дату в формате строки или с ведущим нулем. Метод возвращает только число. Для форматирования нужна дополнительная логика.
const date = new Date('2023-01-05');
const day = date.getDate();
console.log(day); // 5, а не '05'5
3. Некорректная работа с несуществующими датами. JavaScript может автоматически скорректировать дату, что приводит к неожиданному результату для getDate().
const invalidDate = new Date('2023-02-31'); // 31 февраля не существует
console.log(invalidDate.getDate()); // 3 (дата скорректирована на 3 марта)3
История изменений
Метод getDate() присутствует в JavaScript с самых ранних версий и стандартизирован в ECMAScript 1 (ES1). Его поведение и синтаксис оставались стабильными на протяжении многих лет.
Важным уточнением в более поздних спецификациях (ECMAScript 2015 и далее) стала детализация его зависимости от локального времени системы и однозначное определение возвращаемого значения как целого числа от 1 до 31.
Современные движки JavaScript строго следуют стандарту ECMAScript, поэтому кросс-браузерные различия в работе этого метода практически отсутствуют.
Расширенные примеры применения
1. Форматирование даты с ведущим нулем для дней с 1 по 9.
function getFormattedDay(date) {
const day = date.getDate();
return day < 10 ? '0' + day : day.toString();
}
const today = new Date();
console.log(getFormattedDay(today)); // Например, '05'05
2. Расчет количества дней до конца месяца.
function daysUntilMonthEnd(date) {
const year = date.getFullYear();
const month = date.getMonth();
// Создаем дату на 1 число следующего месяца и вычитаем 1 день
const lastDayOfMonth = new Date(year, month + 1, 0);
return lastDayOfMonth.getDate() - date.getDate();
}
const someDate = new Date('2023-10-25');
console.log(daysUntilMonthEnd(someDate));6
3. Проверка, является ли день последним в месяце.
function isLastDayOfMonth(date) {
const testDate = new Date(date.getTime()); // Клонируем дату
testDate.setDate(testDate.getDate() + 1); // Прибавляем 1 день
// Если после прибавления дня месяц изменился, исходная дата была последним днем
return testDate.getMonth() !== date.getMonth();
}
const lastDay = new Date('2023-10-31');
const notLastDay = new Date('2023-10-30');
console.log(isLastDayOfMonth(lastDay)); // true
console.log(isLastDayOfMonth(notLastDay)); // falsetrue false
4. Создание диапазона дат для текущей недели, начиная с понедельника.
function getCurrentWeekDates() {
const now = new Date();
const currentDay = now.getDay(); // День недели
const mondayOffset = currentDay === 0 ? -6 : 1 - currentDay; // Если воскресенье (0), откатываемся на понедельник прошлой недели
const monday = new Date(now);
monday.setDate(now.getDate() + mondayOffset);
const week = [];
for (let i = 0; i < 7; i++) {
const day = new Date(monday);
day.setDate(monday.getDate() + i);
week.push(day.getDate()); // Сохраняем числа дней месяца
}
return week;
}
console.log(getCurrentWeekDates()); // Массив из 7 чисел[23, 24, 25, 26, 27, 28, 29] // Пример для недели 23-29 октября 2023
Аналоги функции в других языках
PHP: Функция date('j') или метод DateTime::format('j') возвращают день месяца без ведущего нуля.
$date = new DateTime('2023-10-05');
echo $date->format('j'); // 55
Python: У объекта datetime есть атрибут day.
from datetime import datetime
dt = datetime(2023, 10, 5)
print(dt.day) # 55
MySQL: Функция DAY() или DAYOFMONTH() извлекает день из даты.
SELECT DAY('2023-10-05'); -- 55
C (стандартная библиотека): Используется структура tm после вызова функции localtime().
#include
// ...
time_t t = time(NULL);
struct tm *local = localtime(&t);
int day = local->tm_mday; // День месяца (1-31) Основное отличие JavaScript-метода в том, что он является частью метода объекта Date, в то время как во многих других языках это отдельная функция или атрибут.