Конвертация UTC эпохи в локальную дату: метод new Date()
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Преобразовать временную метку UTC Epoch в локальную дату можно с помощью следующего фрагмента кода на JavaScript, который принимает метку времени в миллисекундах:
const epoch = 1609459200; // Временная метка Epoch
const localDate = new Date(epoch * 1000).toLocaleString(); // Преобразуем в локальное время
console.log(localDate); // Выводим локальную дату и время
Здесь временная метка Epoch умножается на 1000, чтобы конвертировать её в миллисекунды, которые можно использовать как аргумент для объекта Date. Метод toLocaleString() представляет локальную дату и время.
Дата, UTC и Epoch: триптих
JavaScript обрабатывает даты через объект Date, работая с миллисекундами, прошедшими с определённой отсчётной точки, известной как Epoch, или 1-е января 1970 года, 00:00:00 по времени UTC. Создание экземпляра new Date(0)
возвращает нас к этому началу эпохи.
Из UTC в локальное время: пересечение часовых поясов
JavaScript предоставляет специализированные методы, такие как setUTCSeconds
и getTimezoneOffset
, позволяющие корректно осуществлять переход от времени UTC к времени в локальном часовом поясе и обратно.
Внимание при работе с часовыми поясами
Есть несколько важных аспектов, которые стоит иметь в виду при работе с объектом Date
и преобразовании часовых поясов:
- Объект
Date
работает с миллисекундами, в то время как метка времени Epoch использует секунды. - Метод
getTimezoneOffset
возвращает разницу в минутах между локальным временем и UTC. - Объект
Date
корректно учитывает переход на летнее время (DST).
Библиотеки для работы со временем: Moment.js и прочие
При работе со временем и часовыми поясами могут быть полезны следующие библиотеки:
- Moment.js: предоставляет простую функцию для преобразования UTC в локальное время.
- Day.js: лёгкий аналог Moment.js.
- Luxon: разработан командой Moment.js, обеспечивает работу с неизменяемыми датами.
Функции для преобразования: Epoch и JavaScript Date
Преобразование между метками времени Epoch и объектами Date в JavaScript можно упростить с помощью следующих функций:
function epochToJsDate(ts) {
return new Date(ts * 1000); // Преобразование из Epoch в Date
}
function jsDateToEpoch(d) {
return Math.floor(d.getTime() / 1000); // И обратно
}
Визуализация
Процесс преобразования времени UTC Epoch в локальное время можно сравнить с переводом часов от поясного времени GMT к локальному времени в вашем часовом поясе:
UTC Epoch: 🕛 1610233200 (Epoch time)
const localDate = new Date(1610233200 * 1000);
И вы получите время в вашем локальном формате:
localDate: 🏠 01/10/2021, 12:00 AM (Ваш локальный формат)
От GMT до вашего локального времени — всего один шаг!
Когда встречаются необычные случаи: високосные секунды, DST и другое
Существуют особые случаи при работе с временем и датами в JavaScript:
- Високосные секунды: объект
Date
не учитывает внезапно появляющиеся дополнительные секунды. - Понятный формат: используйте
toLocaleString()
для более удобного представления времени. - Библиотеки: помогут представить даты в подходящем формате, например, со стороны Moment.js или Luxon.
Полезные материалы
- Date – JavaScript | MDN — обзор объекта Date в JavaScript.
- How do I get a timestamp in JavaScript? – Stack Overflow — обсуждение получения меток времени в JavaScript.
- Moment.js | Документация — документация Moment.js для работы с часовыми поясами.
- Convert UTC Epoch to local date – Stack Overflow — обсуждение преобразования времени UTC Epoch в локальную дату.
- UTC · Day.js — документация по библиотеке Day.js.
- Luxon – идеальный инструмент для работы с датами — представление Luxon, инструментом для работы с датами.
- Справочник JavaScript по Date — справочник по объекту Date в JavaScript.