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

toDateString в JavaScript: форматирование даты
Раздел: Дата и время, Форматирование
toDateString: string

Описание метода toDateString()

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

Его основное применение — вывод даты в формате, понятном человеку, без информации о времени. Формат вывода зависит от реализации и локали движка JavaScript, но обычно соответствует шаблону вида Day Month Date Year, например, Tue Sep 13 2022.

Возвращаемое значение — строка (string). Так как формат зависит от движка, для гарантированного результата рекомендуется использовать библиотеки форматирования дат, такие как Intl.DateTimeFormat.

Простые примеры использования

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

const now = new Date();
console.log(now.toDateString());
// Результат (зависит от текущей даты и локали):
// Tue Jan 16 2024

Использование с конкретной датой.

const specificDate = new Date('2023-12-25');
console.log(specificDate.toDateString());
// Результат:
// Mon Dec 25 2023

Альтернативные методы JavaScript

toISOString(): возвращает дату в формате ISO 8601 (например, 2024-01-16T10:30:00.000Z). Применяется для сериализации и передачи дат между системами.

toLocaleDateString(): возвращает строку с частью даты, отформатированную согласно переданным опциям локали. Позволяет контролировать язык и формат вывода, что делает его более предпочтительным для интернационализированных приложений.

toString(): возвращает полное строковое представление объекта Date, включая дату, время и часовой пояс. Для получения только даты менее удобен.

Типичные ошибки

Вызов метода для переменной, которая не является объектом Date, приводит к ошибке TypeError.

const notADate = '2024-01-16';
console.log(notADate.toDateString()); // Ошибка
// TypeError: notADate.toDateString is not a function

Ожидание локализованного вывода. Метод всегда возвращает строку на английском, независимо от настроек браузера или системы.

// В русскоязычной среде
console.log(new Date().toDateString());
// Все равно вернется: Tue Jan 16 2024
// А не: Вт Янв 16 2024

Изменения в спецификации

Спецификация метода toDateString() стабильна и не претерпевала значимых изменений в последних версиях ECMAScript. Формат вывода остается зависимым от реализации, что закреплено в стандарте. Основные изменения в работе с датами в современных версиях JavaScript касаются введения Temporal (на стадии proposal) и улучшения API Intl.DateTimeFormat.

Расширенные примеры

Сравнение вывода с другими методами.

Пример javascript
const date = new Date('2024-06-15T14:30:00Z');
console.log('toDateString():', date.toDateString());
console.log('toString():', date.toString());
console.log('toISOString():', date.toISOString());
console.log('toLocaleDateString("ru-RU"):', date.toLocaleDateString('ru-RU'));
// Пример вывода (для GMT+3):
// toDateString(): Sat Jun 15 2024
// toString(): Sat Jun 15 2024 17:30:00 GMT+0300 (Москва, стандартное время)
// toISOString(): 2024-06-15T14:30:00.000Z
// toLocaleDateString("ru-RU"): 15.06.2024

Использование для логирования или отображения даты в UI без времени.

Пример javascript
function formatTaskDate(dueDate) {
    return `Задача выполняется до: ${dueDate.toDateString()}`;
}
console.log(formatTaskDate(new Date(2024, 11, 31)));
// Задача выполняется до: Tue Dec 31 2024

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

Пример javascript
console.log(new Date('0099-01-01').toDateString());
// Результат может варьироваться:
// Sat Jan 01 0099 (Chrome)
// или Sat Jan 01 99 (некоторые старые среды)

Аналоги в других языках программирования

PHP: Функция date() с форматом 'D M j Y'. Формат полностью настраивается.

echo date('D M j Y'); // Tue Jan 16 2024

Python: Метод strftime() модуля datetime с форматом '%a %b %d %Y'.

from datetime import datetime
print(datetime.now().strftime('%a %b %d %Y')) # Tue Jan 16 2024

MySQL: Функция DATE_FORMAT() с форматом '%a %b %d %Y'.

SELECT DATE_FORMAT(NOW(), '%a %b %d %Y'); -- Tue Jan 16 2024

В отличие от JavaScript, перечисленные аналоги обычно предоставляют предсказуемый и локализованный вывод при указании локали.

JS toDateString function comments

En
ToDateString Returns the date portion of a Date object as a human-readable string