🧱 Суть

В реальных приложениях даты постоянно преобразуются между форматами:

Unix timestamp

      Date

      ISO

  отображение пользователю

📦 Проблема

Разные системы используют разные форматы.

API может вернуть:

1712563200

А JavaScript работает с:

1712563200000

Разница:

  • API → секунды
  • JS Date → миллисекунды

Unix → Date

const date = new Date(timestamp * 1000);

Почему x 1000:

1 секунда = 1000 миллисекунд

Date → ISO

const iso = new Date().toISOString();

Получаем:

2025-04-08T11:23:45.000Z

Где:

  • T – разделитель даты и времени
  • Z – UTC

ISO → Unix

const timestamp =
    new Date('2025-04-08').getTime();

Получаем миллисекунды.

Если нужны секунды:

const unix =
    new Date('2025-04-08').getTime() / 1000;

💻 Код

API:

{
  dt: 1712563200
}

Преобразование:

const date = new Date(item.dt * 1000);
 
const result = date
    .toISOString()
    .split('T')[0];

Результат:

2025-04-08

🎯 Вывод

  • Unix timestamp удобен для передачи данных.
  • ISO удобен для хранения и сравнения.
  • Date используется для работы внутри JS.
  • Перед отображением пользователю дату лучше форматировать отдельно.

🔗 Связано