Привет всем! Я разрабатываю приложение, которое работает с несколькими часовыми поясами. Сервер возвращает даты в формате эпохи Unix. Мне нужно создать функцию, которая сможет преобразовывать эти даты в объекты JavaScript Date.
Кроме того, есть необходимость отправлять обратно на сервер даты JavaScript, преобразованные в формат эпохи.
Кто-нибудь может подсказать, как лучше это реализовать? Буду благодарен за любые советы или примеры кода. Заранее спасибо!
Для конвертации можно использовать встроенные методы Date. Вот простой пример:
const epochToDate = epoch => new Date(epoch * 1000);
const dateToEpoch = date => Math.floor(date.getTime() / 1000);
Эти функции будут работать с любыми часовыми поясами. Помните, что JavaScript использует миллисекунды, а эпоха обычно в секундах, поэтому нужно умножать/делить на 1000.
А вы пробовали использовать какие-нибудь библиотеки для работы с датами?
для работы с датами рекомендую библиотеку Day.js. она легковесная и удобная. вот как можно решить вашу задачу:
const epochToDate = epoch => dayjs.unix(epoch).toDate();
const dateToEpoch = date => dayjs(date).unix();
эти функции будут корректно работать с разными часовыми поясами. Day.js автоматически учитывает локальную зону. если нужно явно задать зону, используйте плагин utc.
проверяйте входные данные на валидность, чтобы избежать ошибок при некорректных значениях.
для преобразования времени эпохи в дату js можно использовать конструктор new Date(). просто передайте ему значение в миллисекундах:
let date = new Date(epochTime * 1000);
а чтобы получить время эпохи из даты, используйте метод getTime() и поделите на 1000:
let epochTime = Math.floor(date.getTime() / 1000);
эти способы работают для любых часовых поясов. главное помнить, что js работает с миллисекундами, а время эпохи обычно в секундах.