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".