🧱 Суть
Объект Date хранит дату в техническом виде.
Для пользователя её нужно преобразовать в читаемую строку.
Основные инструменты:
toISOString()toLocaleDateString()Intl.DateTimeFormat
📦 Проблема
Одна и та же дата может выглядеть по-разному:
2025-04-08или:
8 апреля 2025 г.Для базы данных нужен один формат.
Для интерфейса – красивый и локализованный.
toISOString()
new Date().toISOString();Результат:
2025-04-08T11:23:45.000ZОсобенности:
- всегда UTC
- одинаковый формат везде
- подходит для API и БД
toLocaleDateString()
new Date()
.toLocaleDateString('ru-RU');Результат:
08.04.2025С настройками:
new Date().toLocaleDateString('ru-RU', {
day: 'numeric',
month: 'long',
year: 'numeric'
});Результат:
8 апреля 2025 г.Intl.DateTimeFormat
Более гибкий вариант:
new Intl.DateTimeFormat('ru-RU', {
day: 'numeric',
month: 'long'
}).format(new Date());Результат:
8 апреляСравнение
| Метод | Использование |
|---|---|
toISOString() | API, база данных |
toLocaleDateString() | быстрый вывод |
Intl.DateTimeFormat | гибкое форматирование |
Повторное использование
Если формат используется несколько раз:
const options = {
day: '2-digit',
month: '2-digit'
} as const;
const formatter =
new Intl.DateTimeFormat('ru-RU', options);Если нужно один раз:
const date =
new Intl.DateTimeFormat('ru-RU', {
day: '2-digit',
month: '2-digit'
}).format(new Date());🎯 Вывод
toISOString()→ технический формат.toLocaleDateString()→ простой вывод.Intl.DateTimeFormat→ лучший вариант для сложного UI.