Преобразование миллисекунд в читаемый формат даты в JS
Быстрый ответ
Если стоит задача конвертировать миллисекунды в дату на JavaScript, можно использовать метод new Date(milliseconds)
:
let ms = 1575909015000;
console.log(new Date(ms).toLocaleString()); // "09.12.2019, 10:30:15"
Таким образом, вы получите дату и время в формате, соответствующем вашей локали, начиная от даты до времени. Исчисление идёт от начала эпохи Unix (1 января 1970 года).
Детальный разбор объекта Date
Если вы хотите выделить конкретные компоненты даты, можно использовать следующие методы:
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()
:
console.log(date.toLocaleString("en-US", { timeZone: "America/New_York" })); // "12/9/2019, 5:30:15 AM"
А для адаптации под другие локали подойдёт следующий код:
console.log(date.toLocaleString("en-GB")); // "09/12/2019, 10:30:15"
Удобное форматирование даты с помощью внешних библиотек
К библиотекам, которые помогут вам с форматированием дат, относятся, например, Moment.js или Day.js:
// Используем Moment.js
console.log(moment(ms).format("DD/MM/YYYY HH:mm:ss")); // "09/12/2019 10:30:15"
Возможность форматирования даты по своему усмотрению
В случае необходимости индивидуального формата, создайте функцию для его генерации:
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"
Форматирование даты: ориентируемся на потребности пользователя
Чтобы удовлетворить различные предпочтения пользователей, можете добавить функцию с настраиваемым форматом:
function userPreferredDateFormat(date, format) {
return dayjs(date).format(format);
}
console.log(userPreferredDateFormat(new Date(ms), "YYYY-MM-DD")); // "2019-12-09"
Продвинутые методы: манипуляции с временными интервалами
Если вам нужно управлять относительным временем, например добавить или вычесть дни, с этим справится следующий код:
let tomorrowMs = ms + (24 * 60 * 60 * 1000);
console.log(new Date(tomorrowMs).toLocaleDateString()); // "10/12/2019"
Визуализация
Преобразование миллисекунд в дату – это своего рода перевод "языка времени". Взгляните на следующие примеры:
Миллисекунды: 1617071998467
new Date(1617071998467);
И в итоге получим:
Понятная дата: 📅
| Исходные данные: Миллисекунды (🔢) | Результат: Дата (📅) |
| ----------------------- | ---------------------- |
| 1617071998467 | "2021-03-29T23:59:58Z" |
Такова магия перевода закодированного времени в понятную дату и время.
Сложные случаи: переход на летнее и зимнее время, различия в часовых поясах
Важно учитывать некоторые особенности, связанные с переходом на летнее/зимнее время, различиями в часовых поясах и особенностями работы различных браузеров.
Отображение даты: публичное демонстрирование результатов
Показывайте полученные результаты всем и каждому:
document.body.textContent = new Date(ms).toString(); // "Mon Dec 09 2019 10:30:15 GMT+0300 (Moscow Standard Time)"
Полезные материалы
- Date – JavaScript | MDN — основа для работы с датами в JavaScript.
- Moment.js | Документация — подробности о библиотеке Moment.js для работы с датами.
- Возможно, вам не нужен jQuery — советы по замене решений jQuery на чистый JavaScript.
- Объекты даты в JavaScript — лёгкое в понимании руководство по работе с объектами дат в JavaScript.
- date-fns – современная JavaScript-библиотека для работы с датами — знакомство с проектом date-fns, который предлагает новаторский набор инструментов для работы с датами.
- ISO – ISO 8601 — формат даты и времени — стандарт ISO 8601 для форматирования дат и времени.
- Day.js · 2kB JavaScript библиотека для работы с датами — Day.js, эффективный инструмент для форматирования дат, который отличается своей лёгкостью.