Как получить текущую дату в JavaScript и отформатировать её?
Понимание объекта Date и его методов
Вы уже на правильном пути: new Date() создаёт объект, который хранит текущий момент времени. Проблема в том, что его стандартное строковое представление не подходит для вывода пользователю. Давайте разберём, как с этим работать.
Для форматирования даты вручную нам понадобятся три основных метода:
getDate()— возвращает число месяца (1–31).getMonth()— возвращает номер месяца (0–11, где 0 = январь).getFullYear()— возвращает год (4 цифры).
Решение: создаём массив с названиями месяцев
Так как getMonth() даёт число, мы можем создать массив с русскими названиями месяцев и обращаться к нему по индексу:
// Получаем текущую дату
const today = new Date();
// Массив с названиями месяцев (индексы 0–11)
const monthNames = [
"января", "февраля", "марта", "апреля", "мая", "июня",
"июля", "августа", "сентября", "октября", "ноября", "декабря"
];
// Форматируем: число + месяц + год
const day = today.getDate();
const month = monthNames[today.getMonth()]; // превращаем число в название
const year = today.getFullYear();
// Склеиваем строку
const formattedDate = `Сегодня: ${day} ${month} ${year} года`;
console.log(formattedDate); // "Сегодня: 15 марта 2025 года"
Продвинутый способ: Intl.DateTimeFormat
Современный JavaScript предоставляет встроенный объект Intl.DateTimeFormat, который умеет форматировать даты с учётом локали. Это избавляет от ручного создания массива:
const today = new Date();
const formatter = new Intl.DateTimeFormat('ru-RU', {
day: 'numeric',
month: 'long', // полное название месяца (март)
year: 'numeric'
});
const formattedDate = `Сегодня: ${formatter.format(today)} года`;
console.log(formattedDate); // "Сегодня: 15 марта 2025 года"
Обратите внимание: month: 'long' выдаёт название в именительном падеже ("март"), а не в родительном ("марта"). Если нужно "марта", то проще использовать первый вариант с массивом.
Что выбрать?
- Массив с названиями — если нужен полный контроль над падежом (например, "15 марта" vs "15 март").
- Intl.DateTimeFormat — если нужно быстро и без лишнего кода, но вы готовы принять именительный падеж.
Оба подхода работают на чистом JavaScript без внешних библиотек. Для вашей задачи (интернет-магазин) рекомендую использовать массив — так вы сможете легко подставить правильный падеж. Если же дата нужна просто для отображения, Intl.DateTimeFormat будет элегантнее.
Попробуйте оба варианта в консоли браузера и выберите тот, который лучше подходит под ваш дизайн.
<<Альтернатива: форматирование через toLocaleDateString
Если вам не нужен полный контроль над каждым элементом, можно использовать метод toLocaleDateString(). Он принимает локаль и опции, аналогичные Intl.DateTimeFormat, но возвращает строку сразу:
const today = new Date();
const options = { day: 'numeric', month: 'long', year: 'numeric' };
const formattedDate = today.toLocaleDateString('ru-RU', options);
console.log(formattedDate); // "15 марта 2025 г."
Обратите внимание: toLocaleDateString добавляет "г." в конце. Если это не нужно, просто уберите его через .replace(' г.', '') или используйте первый способ.
Этот метод короче, но менее гибкий. Для простых задач — отличный выбор.
Ответов пока нет.
Войдите чтобы оставить ответ