Форматирование даты в ISO 8601 с помощью moment.js

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы отобразить текущую дату в формате ISO 8601, используя moment.js, примените следующий код:

JS
Скопировать код
const isoDate = moment().toISOString();

В результате получится строка следующего вида: 2023-04-12T07:20:50.000Z, представляющая дату и время в UTC с точностью до миллисекунд.

Кинга Идем в IT: пошаговый план для смены профессии

Выбор метода и общие рекомендации

В библиотеке moment.js существуют два ключевых метода для преобразования даты в формат ISO 8601: .toISOString() и .format().

Преобразование с помощью toISOString()

Чтобы преобразовать дату в UTC и отобразить строку в формате ISO 8601, воспользуйтесь одной строкой кода:

JS
Скопировать код
const date = new Date();
const formattedDate = moment(date).toISOString();

Данный метод эквивалентен методу Date.prototype.toISOString() языка JavaScript, возвращающему дату в UTC.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Форматирование с помощью format

Для сохранения информации о смещении времени относительно часового пояса рекомендуется использовать метод .format():

JS
Скопировать код
const formattedDateWithOffset = moment(date).format();

Таким образом, в результирующей строке останется информация о локальном часовом поясе в формате ISO 8601.

Советы и важные заметки

  • Метод .format() сохраняет информацию о часовом поясе используемого экземпляра moment, в отличие от .toISOString(), который всегда возвращает время в UTC.
  • Регулярно проверяйте наличие актуальных задач на GitHub, влияющих на форматирование дат.
  • Обновляйте библиотеку moment.js для использования последних улучшений и исправлений ошибок.

Визуализация

Процесс форматирования можно представить как преобразование даты в формат, удобный для взаимодействия с различными системами:

Markdown
Скопировать код
Исходная дата         : [📅 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:

JS
Скопировать код
const isoDateWithVanillaJS = new Date().toISOString();

Такой подход также позволяет получить дату в формате ISO 8601 в UTC без участия дополнительных библиотек.

MongoDB и ISO 8601

В MongoDB даты хранятся в формате ISO 8601, поэтому использование метода .toISOString() является оптимальным:

JS
Скопировать код
const mongoDBQueryDate = moment().toISOString();

Поскольку MongoDB использует UTC, .toISOString() идеально подходит для этого случая.

Преобразование строки с датой и временем

Когда потребуется превратить строку ISO 8601 обратно в объект даты:

JS
Скопировать код
const dateFromISOString = moment("2023-03-26T00:00:00.000Z", moment.ISO_8601);

Вы получите экземпляр moment, который точно отображает необходимый момент времени.

Рекомендации по реализации

  • Сравнивайте функционал moment.js и стандартного JavaScript, чтобы выбрать наиболее подходящее решение для вашего случая.
  • Помните о различии во времени, в частности о смене на летнее время, при использовании .format().
  • Помните, что .toISOString() приводит время к UTC, что в зависимости от ситуации может являться как преимуществом, так и недостатком.

Полезные материалы

  1. Документация Moment.js — официальная документация по форматированию дат при помощи Moment.js.
  2. ISO 8601 – Википедия — детальное описание стандарта формата даты и времени ISO 8601.
  3. Date.prototype.toISOString() – JavaScript | MDN — руководство по использованию метода JavaScript для создания строк в формате ISO 8601.
  4. Шпаргалка по Moment.js — удобный справочник по функциям форматирования Moment.js.
  5. GitHub – moment/moment — исходный код, задачи и участие сообщества в развитии Moment.js на GitHub.
  6. moment – npm — страница пакета Moment.js на платформе NPM для установки и получения актуальной информации.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой метод в moment.js возвращает дату в формате ISO 8601 в UTC?
1 / 5