Преобразование ISO 8601 в формат yyyy-mm-dd: решение

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

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

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

Для преобразования ISO даты в формат yyyy-mm-dd используйте комбинацию методов toISOString() и slice():

JS
Скопировать код
let isoDate = '2077-11-12T22:00:00.000Z'; // Дата выпуска Cyberpunk 2077
let formattedDate = new Date(isoDate).toISOString().slice(0, 10);
console.log(formattedDate); // Вернёт: 2077-11-12

Просто и лаконично, как хорошо написанный код.

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

Подробности конвертации дат

Разберём подробнее, как можно преобразовать ISO дату в требуемый формат. В JavaScript существует встроенный объект Date, с помощью которого мы работаем с датами.

Сначала создаем новый объект Date, передавая в него строку в формате ISO, затем форматируем полученное значение обратно в строку ISO и отрезаем необходимый фрагмент:

JS
Скопировать код
let isoDate = '2077-11-12T22:00:00.000Z'; // Исходная строка в ISO формате
let date = new Date(isoDate); // Преобразуем её в объект Date
let formattedDate = date.toISOString().slice(0, 10); // Обратное преобразование в строку ISO, после чего обрезаем
console.log(formattedDate); // Вернёт "2077-11-12"

Работаем с компонентами даты

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

JS
Скопировать код
let isoDate = '2077-11-12T22:00:00.000Z';
let date = new Date(isoDate);
let year = date.getFullYear(); 
let month = String(date.getMonth() + 1).padStart(2, '0'); // В JavaScript месяцы начинаются с 0
let day = String(date.getDate()).padStart(2, '0'); // Добавляем ведущие нули
let formattedDate = `${year}-${month}-${day}`;

console.log(formattedDate); // Вернёт "2077-11-12"

Подобный подход предоставляет точное управление форматированием каждого компонента даты.

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

Визуализируйте процесс форматирования ISO даты как алгоритм:

Markdown
Скопировать код
Исходная ISO дата (📜): "2077-11-12T22:00:00.000Z"

Желаемый формат (📅): {yyyy-mm-dd}

Процесс конвертации (📜 ➡️ ✂️ ➡️ 📅): "2077-11-12"

Понятно и явно, как блок-схема программы.

Углубление в конвертацию дат

Роскошь форматирования с toLocaleDateString()

Если требуется дата, отформатированная с учетом локализации, то метод toLocaleDateString() – это то, что вам нужно:

JS
Скопировать код
let isoDate = '2077-11-12T22:00:00.000Z';
let date = new Date(isoDate);
let options = { year: 'numeric', month: '2-digit', day: '2-digit' };
let formattedDate = date.toLocaleDateString('en-CA', options); // Используем канадский стандарт

console.log(formattedDate); // Вернет "2077-11-12"

Идеально подходит для адаптации формата даты к региональным стандартам.

Учёт часовых поясов (UTC)

Если вы работаете с различными часовыми поясами, учитывайте это, испольуя UTC-методы:

JS
Скопировать код
let isoDate = '2077-11-12T22:00:00.000Z';
let date = new Date(isoDate);
let year = date.getUTCFullYear();
let month = String(date.getUTCMonth() + 1).padStart(2, '0');
let day = String(date.getUTCDate()).padStart(2, '0');
let formattedDate = `${year}-${month}-${day}`;

console.log(formattedDate); // Вернет "2077-11-12"

Теперь вы готовы обращаться с датами, учитывая разные часовые пояса.

Повышаем уровень: библиотека для работы с датами

В сложных проектах может потребоваться использовать специализированные библиотеки, например, date-fns или Day.js:

JS
Скопировать код
import dayjs from 'dayjs';

let isoDate = '2023-03-28T15:00:00.000Z';
let formattedDate = dayjs(isoDate).format('YYYY-MM-DD');

console.log(formattedDate); // Вернет "2023-03-28"

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

  1. Date.prototype.toISOString() – JavaScript | MDN — документация метода toISOString().
  2. Format JavaScript date as yyyy-mm-dd – Stack Overflow — обсуждение форматирования даты на форуме Stack Overflow.
  3. JavaScript Date Reference — справочник по объекту Date в JavaScript.
  4. Format · Day.js — документация по библиотеке Day.js с примерами форматирования дат.
  5. Moment.js | Docs — документация по библиотеке Moment.js, которая будет полезна в работе с датами.