Форматирование даты в ISO 8601 с помощью moment.js
Быстрый ответ
Для того чтобы отобразить текущую дату в формате ISO 8601, используя moment.js, примените следующий код:
const isoDate = moment().toISOString();
В результате получится строка следующего вида: 2023-04-12T07:20:50.000Z
, представляющая дату и время в UTC с точностью до миллисекунд.
Выбор метода и общие рекомендации
В библиотеке moment.js существуют два ключевых метода для преобразования даты в формат ISO 8601: .toISOString()
и .format()
.
Преобразование с помощью toISOString()
Чтобы преобразовать дату в UTC и отобразить строку в формате ISO 8601, воспользуйтесь одной строкой кода:
const date = new Date();
const formattedDate = moment(date).toISOString();
Данный метод эквивалентен методу Date.prototype.toISOString()
языка JavaScript, возвращающему дату в UTC.
Форматирование с помощью format
Для сохранения информации о смещении времени относительно часового пояса рекомендуется использовать метод .format()
:
const formattedDateWithOffset = moment(date).format();
Таким образом, в результирующей строке останется информация о локальном часовом поясе в формате ISO 8601.
Советы и важные заметки
- Метод
.format()
сохраняет информацию о часовом поясе используемого экземпляра moment, в отличие от.toISOString()
, который всегда возвращает время в UTC. - Регулярно проверяйте наличие актуальных задач на GitHub, влияющих на форматирование дат.
- Обновляйте библиотеку moment.js для использования последних улучшений и исправлений ошибок.
Визуализация
Процесс форматирования можно представить как преобразование даты в формат, удобный для взаимодействия с различными системами:
Исходная дата : [📅 26-03-2023]
Применение Moment.js : `moment(originalDate).toISOString()`
Результат (ISO 8601) : [✈️ 2023-03-26T00:00:00.000Z]
Теперь дата может без проблем "путешествовать" между различными платформами и инструментами.
Развитие навыков работы с ISO 8601 в moment.js
Moment.js предлагает продвинутые функциональные возможности для работы со стандартом ISO 8601.
Почему стоит использовать библиотеку?
Иногда достаточно вернуться к основам и использовать стандартные инструменты JavaScript:
const isoDateWithVanillaJS = new Date().toISOString();
Такой подход также позволяет получить дату в формате ISO 8601 в UTC без участия дополнительных библиотек.
MongoDB и ISO 8601
В MongoDB даты хранятся в формате ISO 8601, поэтому использование метода .toISOString()
является оптимальным:
const mongoDBQueryDate = moment().toISOString();
Поскольку MongoDB использует UTC, .toISOString()
идеально подходит для этого случая.
Преобразование строки с датой и временем
Когда потребуется превратить строку ISO 8601 обратно в объект даты:
const dateFromISOString = moment("2023-03-26T00:00:00.000Z", moment.ISO_8601);
Вы получите экземпляр moment, который точно отображает необходимый момент времени.
Рекомендации по реализации
- Сравнивайте функционал moment.js и стандартного JavaScript, чтобы выбрать наиболее подходящее решение для вашего случая.
- Помните о различии во времени, в частности о смене на летнее время, при использовании
.format()
. - Помните, что
.toISOString()
приводит время к UTC, что в зависимости от ситуации может являться как преимуществом, так и недостатком.
Полезные материалы
- Документация Moment.js — официальная документация по форматированию дат при помощи Moment.js.
- ISO 8601 – Википедия — детальное описание стандарта формата даты и времени ISO 8601.
- Date.prototype.toISOString() – JavaScript | MDN — руководство по использованию метода JavaScript для создания строк в формате ISO 8601.
- Шпаргалка по Moment.js — удобный справочник по функциям форматирования Moment.js.
- GitHub – moment/moment — исходный код, задачи и участие сообщества в развитии Moment.js на GitHub.
- moment – npm — страница пакета Moment.js на платформе NPM для установки и получения актуальной информации.