Learn JavaScript

toDateString() - строка даты без времени в JavaScript

toDateString() возвращает строку только с датой, без времени. Метод не меняет объект Date и формирует результат по локальному часовому поясу пользователя.

Синтаксис

Базовая запись выглядит так:

date.toDateString()

Где:

  • date - это объект Date

У метода нет аргументов.

Что возвращает toDateString()

Метод возвращает строку.

Обычно она выглядит примерно так:

Wed Jan 15 2025

Пример:

const date = new Date("2025-01-15T14:30:45.123+03:00");

console.log(typeof date.toDateString()); // "string"
console.log(date.toDateString()); // "Wed Jan 15 2025"

В строке остаётся только дата, без часов, минут, секунд и миллисекунд.

Простой пример

const date = new Date("2025-01-15T14:30:45.123+03:00");

console.log(date.toDateString()); // "Wed Jan 15 2025"

У объекта есть и дата, и время, но toDateString() возвращает только дату в виде строки.

toDateString() работает по локальному времени

Это главный момент метода.

toDateString() не использует UTC. Он смотрит на дату с точки зрения локального часового пояса пользователя.

const date = new Date("2025-01-15T23:30:00.000Z");

console.log(date.toISOString()); // "2025-01-15T23:30:00.000Z"
console.log(date.toDateString()); // "Thu Jan 16 2025"

Здесь по UTC ещё 15 января, но в часовом поясе +03:00 уже наступило 16 января. Поэтому строка даты меняется.

Именно из-за этого toDateString() не подходит для задач, где важна дата именно по UTC.

В результате нет времени

Это полезно помнить.

Метод не удаляет время из самого объекта Date, а просто не показывает его в строке.

const date = new Date("2025-01-15T14:30:45.123+03:00");

console.log(date.toDateString()); // "Wed Jan 15 2025"
console.log(date.getHours()); // 14
console.log(date.getMinutes()); // 30

Время у объекта осталось, просто toDateString() его не выводит.

toDateString() не меняет исходную дату

Метод только читает текущую дату и возвращает строку.

const date = new Date("2025-01-15T14:30:45.123+03:00");
const before = date.getTime();
const result = date.toDateString();

console.log(result); // "Wed Jan 15 2025"
console.log(date.getTime() === before); // true

После вызова метода сам объект Date остаётся прежним.

Чем toDateString() отличается от toISOString()

Это очень важное сравнение.

  • toDateString() возвращает только дату и делает это по локальному времени
  • toISOString() возвращает полную дату и время в формате ISO 8601 по UTC
const date = new Date("2025-01-15T23:30:00.000Z");

console.log(date.toDateString()); // "Thu Jan 16 2025"
console.log(date.toISOString()); // "2025-01-15T23:30:00.000Z"

Если нужна дата для API, базы данных, логов или обмена между системами, чаще используют toISOString().

Чем toDateString() отличается от toString()

Оба метода работают по локальному времени, но вывод у них разный.

  • toDateString() показывает только дату
  • toString() показывает дату, время и часовой пояс
const date = new Date("2025-01-15T14:30:45.123+03:00");

console.log(date.toDateString()); // "Wed Jan 15 2025"
console.log(date.toString()); // строка с датой, временем и часовым поясом

Если нужен короткий вариант без времени, удобнее toDateString().

Формат строки лучше не использовать для хранения и точного разбора

Это практический нюанс.

toDateString() хорошо подходит для вывода или отладки, но не для надёжного хранения даты.

const date = new Date("2025-01-15T14:30:45.123+03:00");

console.log(date.toDateString()); // "Wed Jan 15 2025"

Такая строка удобна для чтения, но для API и сериализации обычно лучше подходят toISOString() или toJSON().

Invalid Date не вызывает ошибку

Это важное отличие от toISOString().

Если дата невалидна, toDateString() не выбрасывает исключение, а возвращает строку "Invalid Date".

const date = new Date("invalid");

console.log(date.toDateString()); // "Invalid Date"

Это поведение удобно, но всё равно лучше заранее проверять корректность даты, если она приходит от пользователя или из внешнего источника.

Когда это полезно

toDateString() особенно удобен, когда:

  • нужно быстро показать дату без времени
  • вы выводите дату в логах или отладочных сообщениях
  • важна именно локальная дата пользователя
  • нужна короткая строка даты без часов и минут

Пример:

const publishedAt = new Date("2025-01-15T14:30:45.123+03:00");

console.log(`Опубликовано: ${publishedAt.toDateString()}`);

Частые ошибки

Ожидать дату по UTC, а не по локальному времени

const date = new Date("2025-01-15T23:30:00.000Z");

console.log(date.toDateString()); // "Thu Jan 16 2025"

Метод использует локальный часовой пояс пользователя.

Думать, что метод удаляет время из объекта

const date = new Date("2025-01-15T14:30:45.123+03:00");

date.toDateString();

console.log(date.getHours()); // 14

Время остаётся внутри объекта Date.

Путать toDateString() и toISOString()

const date = new Date("2025-01-15T23:30:00.000Z");

console.log(date.toDateString()); // локальная дата
console.log(date.toISOString()); // дата и время по UTC

Это методы для разных задач.

Использовать toDateString() для хранения данных

const date = new Date();

console.log(date.toDateString());

Для хранения, API и сериализации обычно лучше подходят более предсказуемые форматы вроде toISOString().

Ожидать ошибку у Invalid Date

const date = new Date("invalid");

console.log(date.toDateString()); // "Invalid Date"

Метод возвращает строку, а не выбрасывает исключение.

Быстрая памятка

  • toDateString() вызывается у объекта Date
  • метод не принимает аргументы
  • результатом является строка
  • в строке остаётся только дата без времени
  • метод работает по локальному времени
  • сам объект Date не изменяется
  • toDateString() не подходит для задач, где нужен UTC
  • для невалидной даты метод возвращает строку "Invalid Date"
  • для точного хранения и передачи данных чаще используют toISOString()

Коротко

toDateString() в JavaScript нужен, чтобы получить строку только с датой, без времени. Главное, что стоит запомнить: метод работает по локальному часовому поясу, не меняет исходный объект Date, возвращает строку вроде Wed Jan 15 2025, а для Invalid Date отдаёт строку "Invalid Date".