Как получить текущую дату в JavaScript: полный разбор для новичков

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Как получить текущую дату в JavaScript: разбираем популярный вопрос с Stack Overflow

Если вы только начинаете свой путь в веб-разработке, рано или поздно перед вами встанет задача: вывести на страницу текущую дату. Казалось бы, что может быть проще? Но, как показывает статистика Stack Overflow, вопрос "How do I get the current date in JavaScript?" набирает тысячи просмотров каждый месяц. Почему? Потому что за простой формулировкой скрывается целый пласт нюансов: от форматов вывода до работы с часовыми поясами.

В этой статье мы не просто дадим готовый код. Мы разберем его по косточкам, научимся управлять форматами и избежим типичных граблей, на которые наступают новички. Поехали!

Знакомьтесь: объект Date — ваш главный инструмент

В JavaScript нет специальной команды "покажи сегодня". Вместо этого язык предлагает мощный, но иногда коварный объект Date. Чтобы получить текущий момент времени, достаточно создать новый экземпляр без аргументов:

const now = new Date();
console.log(now); // Вывод: Tue Oct 15 2024 14:30:00 GMT+0300

Вот так просто! Но давайте посмотрим, что мы на самом деле получили. В консоли вы увидите что-то вроде Tue Oct 15 2024 14:30:00 GMT+0300. Это человекочитаемый формат, но он не всегда подходит для реальных задач. Представьте, что вы делаете интернет-магазин и хотите показать дату заказа как "15.10.2024" — такой "родной" вывод не годится.

Дело в том, что объект Date хранит миллисекунды, прошедшие с 1 января 1970 года (эпоха Unix). А то, что мы видим в консоли — это результат неявного преобразования в строку. Чтобы получить контроль над форматом, нужно использовать методы объекта.

Методы для извлечения компонентов даты

Представьте, что дата — это пицца, которую нужно разрезать на кусочки: год, месяц, день, часы, минуты, секунды. У объекта Date есть специальные "ножи" — методы для каждого кусочка.

Вот они, самые популярные:

  • getFullYear() — возвращает год (например, 2024).
  • getMonth() — возвращает месяц от 0 до 11. Внимание: январь — это 0, декабрь — 11. Это частая ловушка!
  • getDate() — возвращает день месяца (1-31).
  • getDay() — возвращает день недели от 0 (воскресенье) до 6 (суббота).
  • getHours(), getMinutes(), getSeconds() — очевидно, часы, минуты, секунды.

Давайте соберем из них свою дату:

const now = new Date();
const year = now.getFullYear();
const month = now.getMonth() + 1; // +1, потому что январь = 0
const day = now.getDate();
const hours = now.getHours();
const minutes = now.getMinutes();

console.log(`${day}.${month}.${year} ${hours}:${minutes}`);
// Вывод: "15.10.2024 14:30"

Обратите внимание: мы прибавили +1 к месяцу. Это классическая ошибка новичка — забыть про нумерацию с нуля. Запомните раз и навсегда: getMonth() возвращает 0 для января.

Красивый вывод: форматирование даты

Ручная сборка строки — это хорошо для понимания, но есть и более элегантные способы. JavaScript предлагает несколько встроенных методов для форматирования:

1. toLocaleDateString() — для локализованного вывода

Этот метод подстраивается под региональные настройки. Хотите по-русски? Пожалуйста:

const now = new Date();
console.log(now.toLocaleDateString('ru-RU')); // "15.10.2024"
console.log(now.toLocaleDateString('en-US')); // "10/15/2024"
console.log(now.toLocaleDateString('de-DE')); // "15.10.2024"

Можно даже настроить формат под свои нужды, передав объект с опциями:

const options = {
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  weekday: 'long'
};
console.log(now.toLocaleDateString('ru-RU', options));
// "вторник, 15 октября 2024 г."

2. toISOString() — для баз данных и API

Если вы отправляете дату на сервер или сохраняете в базу данных, используйте международный стандарт ISO 8601:

console.log(now.toISOString());
// "2024-10-15T11:30:00.000Z"

Обратите внимание на букву "Z" в конце — она означает, что время указано в UTC (всемирное координированное время). Это удобно, потому что сервер в любой точке мира поймет вашу дату однозначно.

Часовые пояса: где подвох?

Вы, наверное, заметили: в методе toISOString() время отличается от того, что мы видели раньше. Это произошло потому, что new Date() создает объект в вашем локальном часовом поясе, а toISOString() переводит его в UTC.

Если вам нужно работать с UTC, используйте методы с приставкой getUTC...:

console.log(now.getUTCFullYear()); // 2024
console.log(now.getUTCMonth());    // 9 (октябрь)
console.log(now.getUTCDate());     // 15

А если нужно, наоборот, создать дату из UTC-строки? Тоже просто:

const fromUTC = new Date('2024-10-15T11:30:00Z');
console.log(fromUTC.toLocaleString('ru-RU'));
// "15.10.2024, 14:30:00" (если вы в Москве, GMT+3)

Типичные ошибки начинающих (и как их избежать)

Давайте разберем ситуации, которые стопорят новичков и приводят к вопросам на Stack Overflow.

Ошибка №1: Путаница с getMonth()

Мы уже говорили: январь — это 0. Если вы не прибавите единицу, пользователь увидит "15.0.2024" вместо "15.10.2024". Всегда используйте getMonth() + 1.

Ошибка №2: Использование getYear() вместо getFullYear()

Метод getYear() считается устаревшим и возвращает год минус 1900. То есть для 2024 года он вернет 124. Всегда используйте getFullYear().

Ошибка №3: Сравнение дат через ==

Два объекта Date с одинаковым значением не равны друг другу при сравнении через == или ===. Потому

Блоги

Рекомендаций по книгам