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

Использование метода 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.

Пример javascript
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. Расчет количества дней до конца месяца.

Пример javascript
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. Проверка, является ли день последним в месяце.

Пример javascript
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)); // false
true
false

4. Создание диапазона дат для текущей недели, начиная с понедельника.

Пример javascript
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'); // 5
5

Python: У объекта datetime есть атрибут day.

from datetime import datetime
dt = datetime(2023, 10, 5)
print(dt.day) # 5
5

MySQL: Функция DAY() или DAYOFMONTH() извлекает день из даты.

SELECT DAY('2023-10-05'); -- 5
5

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

#include 
// ...
time_t t = time(NULL);
struct tm *local = localtime(&t);
int day = local->tm_mday; // День месяца (1-31)

Основное отличие JavaScript-метода в том, что он является частью метода объекта Date, в то время как во многих других языках это отдельная функция или атрибут.

JS getDate function comments

En
GetDate Returns the day of the month (1-31) for the specified date