Преобразование миллисекунд в читаемый формат даты в JS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если стоит задача конвертировать миллисекунды в дату на JavaScript, можно использовать метод new Date(milliseconds):

JS
Скопировать код
let ms = 1575909015000;
console.log(new Date(ms).toLocaleString()); // "09.12.2019, 10:30:15"

Таким образом, вы получите дату и время в формате, соответствующем вашей локали, начиная от даты до времени. Исчисление идёт от начала эпохи Unix (1 января 1970 года).

Кинга Идем в IT: пошаговый план для смены профессии

Детальный разбор объекта Date

Если вы хотите выделить конкретные компоненты даты, можно использовать следующие методы:

JS
Скопировать код
let date = new Date(ms);
console.log(date.getFullYear());          // "2019"
console.log(date.getMonth() + 1);         // "12" // Не забывайте, что отсчёт месяцев начинается с нуля.
console.log(date.getDate());              // "9"
console.log(date.toDateString());         // "Mon Dec 09 2019"

Адаптация даты без привязки к локализации

Для учёта различий в локализации и часовых поясах идеально подходит метод toLocaleString():

JS
Скопировать код
console.log(date.toLocaleString("en-US", { timeZone: "America/New_York" }));  // "12/9/2019, 5:30:15 AM"

А для адаптации под другие локали подойдёт следующий код:

JS
Скопировать код
console.log(date.toLocaleString("en-GB")); // "09/12/2019, 10:30:15"

Удобное форматирование даты с помощью внешних библиотек

К библиотекам, которые помогут вам с форматированием дат, относятся, например, Moment.js или Day.js:

JS
Скопировать код
// Используем Moment.js
console.log(moment(ms).format("DD/MM/YYYY HH:mm:ss")); // "09/12/2019 10:30:15"

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

В случае необходимости индивидуального формата, создайте функцию для его генерации:

JS
Скопировать код
function customFormat(date) {
    let dd = date.getDate();
    let mm = date.getMonth() + 1; // Январь – это 0!
    let yyyy = date.getFullYear();

    dd = dd < 10 ? '0' + dd : dd;
    mm = mm < 10 ? '0' + mm : mm;

    return `${dd}/${mm}/${yyyy}`;
}

console.log(customFormat(new Date(ms))); // "09/12/2019"

Форматирование даты: ориентируемся на потребности пользователя

Чтобы удовлетворить различные предпочтения пользователей, можете добавить функцию с настраиваемым форматом:

JS
Скопировать код
function userPreferredDateFormat(date, format) {
    return dayjs(date).format(format);
}

console.log(userPreferredDateFormat(new Date(ms), "YYYY-MM-DD")); // "2019-12-09"

Продвинутые методы: манипуляции с временными интервалами

Если вам нужно управлять относительным временем, например добавить или вычесть дни, с этим справится следующий код:

JS
Скопировать код
let tomorrowMs = ms + (24 * 60 * 60 * 1000);
console.log(new Date(tomorrowMs).toLocaleDateString()); // "10/12/2019"

Визуализация

Преобразование миллисекунд в дату – это своего рода перевод "языка времени". Взгляните на следующие примеры:

Markdown
Скопировать код
Миллисекунды: 1617071998467
JS
Скопировать код
new Date(1617071998467);

И в итоге получим:

Markdown
Скопировать код
Понятная дата: 📅
Markdown
Скопировать код
| Исходные данные: Миллисекунды (🔢)   | Результат: Дата (📅)          |
| ----------------------- | ----------------------  |
| 1617071998467           | "2021-03-29T23:59:58Z" |

Такова магия перевода закодированного времени в понятную дату и время.

Сложные случаи: переход на летнее и зимнее время, различия в часовых поясах

Важно учитывать некоторые особенности, связанные с переходом на летнее/зимнее время, различиями в часовых поясах и особенностями работы различных браузеров.

Отображение даты: публичное демонстрирование результатов

Показывайте полученные результаты всем и каждому:

JS
Скопировать код
document.body.textContent = new Date(ms).toString(); // "Mon Dec 09 2019 10:30:15 GMT+0300 (Moscow Standard Time)"

Полезные материалы

  1. Date – JavaScript | MDN — основа для работы с датами в JavaScript.
  2. Moment.js | Документация — подробности о библиотеке Moment.js для работы с датами.
  3. Возможно, вам не нужен jQuery — советы по замене решений jQuery на чистый JavaScript.
  4. Объекты даты в JavaScript — лёгкое в понимании руководство по работе с объектами дат в JavaScript.
  5. date-fns – современная JavaScript-библиотека для работы с датами — знакомство с проектом date-fns, который предлагает новаторский набор инструментов для работы с датами.
  6. ISO – ISO 8601 — формат даты и времени — стандарт ISO 8601 для форматирования дат и времени.
  7. Day.js · 2kB JavaScript библиотека для работы с датами — Day.js, эффективный инструмент для форматирования дат, который отличается своей лёгкостью.
Свежие материалы