Конвертация обычной даты в Unix timestamp на JavaScript
Быстрый ответ
Для быстрого получения Unix timestamp из обычной даты в JavaScript, можно воспользоваться следующим кодом:
const unixTimestamp = Math.floor(new Date('2023-01-01').getTime() / 1000);
console.log(unixTimestamp);
Функция new Date()
создает объект даты, метод getTime()
возвращает время в миллисекундах, прошедшее с начала эпохи Unix, а функция Math.floor()
округляет результат до ближайшего целого числа. Деление на 1000 позволяет получить Unix timestamp в секундах.
Форматы дат, которые нужно знать
Корректность формата вводимой даты — залог успеха. JavaScript правильно интерпретирует формат ISO 8601, который обычно выглядит так: 'YYYY-MM-DD'. Использование неправильных форматов может привести к ошибкам и разочарованию.
Пример некорректного формата:
const uncertainUnix = new Date('01-01-2023').getTime() / 1000; // Неправильное расположение месяцев может запутать
Пример корректного формата:
const definiteUnix = new Date('2023-01-01').getTime() / 1000; // Все отрабатывает как нужно
Переход от миллисекунд к секундам происходит с помощью функции Math.floor()
.
Временная зона имеет значение
При работе с timestamp важно учесть временную зону. JavaScript по умолчанию использует временную зону браузера. Чтобы учесть UTC метки, добавьте 'Z' в конец строки или используйте Date.UTC()
.
Пример учета временной зоны:
const timestampWithTimezone = new Date('2023-01-01T00:00:00Z').getTime() / 1000; // 'Z' обозначает временную зону UTC
Работа в UTC:
const utcTimestamp = Date.UTC(2023, 0, 1) / 1000; // Нумерация месяцев в JavaScript начинается с нуля
Использование Date.parse()
Метод Date.parse()
возвращает timestamp в миллисекундах.
const parsedTimestamp = Date.parse('2023-01-01') / 1000;
Для исправной работы Date.parse()
передаваемая строка должна соответствовать формату, понятному JavaScript.
Визуализация
Представьте путь от обычной даты до Unix timestamp так:
📅 Обычная Дата: "2023-04-01 12:00:00"
🚂💨🕒 Unix Timestamp: 1680345600
И ваш итоговый код, с помощью которого можно перейти в мир Unix времени:
const date = new Date("2023-04-01 12:00:00");
const timestamp = date.getTime() / 1000;
Каждая секунда приближает дату к новой эре.
Библиотеки помогают: moment.js
Библиотека moment.js
упрощает работу с датами и преобразование их в Unix timestamp.
const momentTimestamp = moment('2023-01-01', 'YYYY-MM-DD').unix();
moment.js
особенно полезен при работе со сложными форматами и при манипуляциях с датами.
Различия единиц измерения timestamp
getTime()
и Date.parse()
возвращают время в миллисекундах, в то время как Unix timestamp измеряется в секундах. Это означает потребность в дополнительном преобразовании и внимательном отношении к формату данных.
Преобразование объекта Date
Объекты Date
и отдельные компоненты даты тоже могут быть преобразованы в Unix timestamp.
Текущая дата:
const nowTimestamp = Math.floor(Date.now() / 1000);
Компоненты даты:
const componentTimestamp = Math.floor(new Date(2023, 0, 1, 0, 0, 0, 0).getTime() / 1000);
Полезные материалы
- Date.parse() – JavaScript | MDN — подробности о методе Date.parse().
- Epoch Converter – Unix Timestamp Converter — преобразование времени станет проще.
- Преобразование Unix timestamp во время в JavaScript – Stack Overflow — опыт сообщества разработчиков поможет в решении.
- Unix Time Stamp – Epoch Converter — быстрое путешествие во времени.
- Date.prototype.getTime() – JavaScript | MDN — посмотрите, как получить время от объекта Date.
- Специальный раздел для работы с датами в JavaScript — Ваш надежный гид в мир JavaScript дат.
- Полное руководство по датам JavaScript — здесь вы найдете все о работе с датами в JavaScript.