🧱 Суть
toISOString() и Intl.DateTimeFormat решают разные задачи форматирования даты.
toISOString()– для стабильного машинного формата.Intl.DateTimeFormat– для отображения даты пользователю.
📦 Проблема
1. Непонятно, какой способ выбрать
Оба возвращают строку с датой, но предназначены для разных сценариев.
2. Неподходящий формат для пользователя
Дата вида:
2025-04-22удобна для кода, но не всегда для интерфейса.
✅ Решение
Использовать форматирование в зависимости от задачи.
💻 Код
toISOString()
Получение даты в формате ISO:
const date = new Date(item.dt * 1000)
.toISOString()
.split('T')[0];Что происходит:
new Date(...)– создаёт объект даты.toISOString()– преобразует в строку ISO.split('T')[0]– оставляет только дату.
Результат:
2025-04-22Можно вынести в функцию:
export const formatDate = (unixTimestamp: number): string => {
return new Date(unixTimestamp * 1000)
.toISOString()
.split('T')[0];
};Intl.DateTimeFormat
Форматирование с учётом локали:
export const formatDate = (unixTimestamp: number): string => {
return new Intl.DateTimeFormat('ru-RU').format(
new Date(unixTimestamp * 1000)
);
};Результат для ru-RU:
22.04.2025Для en-US:
4/22/2025🎯 Вывод
| Вариант | Результат | Когда использовать |
|---|---|---|
toISOString().split('T')[0] | 2025-04-22 | Для логики, хранения, API, сравнения дат |
Intl.DateTimeFormat | 22.04.2025, 4/22/2025 | Для отображения пользователю |
toISOString()– машинный формат.Intl.DateTimeFormat– пользовательский формат с учётом локали.