Преобразование даты в формате 'MM/dd/yyyy' в JavaScript

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

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

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

Если вам нужно быстро преобразовать дату в формат MM/dd/yyyy, воспользуйтесь следующим кодом:

JS
Скопировать код
function formatDate(d) {
  return [
    (d.getMonth() + 1).toString().padStart(2, '0'), 
    d.getDate().toString().padStart(2, '0'), 
    d.getFullYear()
  ].join('/');
}

console.log(formatDate(new Date())); // Вывод: "MM/dd/yyyy"

Функция padStart гарантирует, что месяц и день всегда представлены двузначными числами.

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

Работа с нестандартными строками дат и сложностями часовых поясов

Для обработки нестандартных форматов дат и избежания проблем с часовыми поясами можно использовать объект Date:

JS
Скопировать код
function formatNonStandardDate(str) {
  const [, month, day, year] = /(\d{1,2})\/(\d{1,2})\/(\d{4})/.exec(str);
  const date = new Date(Date.UTC(year, month – 1, day));
  return formatDate(date);
}

console.log(formatNonStandardDate('4/13/2021')); // Результат: "04/13/2021"

Этот метод позволяет сохранить структуру исходной даты.

Intl.DateTimeFormat для универсальности

Если необходимо, чтобы формат даты соответствовал местным стандартам, используйте Intl.DateTimeFormat:

JS
Скопировать код
function formatDateIntl(d) {
  return new Intl.DateTimeFormat('en-US', {
    year: 'numeric', month: '2-digit', day: '2-digit'
  }).format(d);
}

console.log(formatDateIntl(new Date())); // Формат: "MM/dd/yyyy"

Так можно учесть и локальные особенности, и требования к точности форматирования.

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

Допустим, вам требуется отформатировать следующую дату:

Markdown
Скопировать код
📅 Ваша текущая дата: "Tue Apr 13 2021 09:33:45 GMT+0000 (Coordinated Universal Time)"

Пример универсального форматирования даты:

JS
Скопировать код
const formatDate = (date) => {
  let d = new Date(date),
      month = '' + (d.getMonth() + 1),
      day = '' + d.getDate(),
      year = d.getFullYear();

  if (month.length < 2) 
      month = '0' + month;
  if (day.length < 2) 
      day = '0' + day;

  return [month, day, year].join('/');
};

Теперь даты будут выводиться в формате, который вам знаком:

Markdown
Скопировать код
🖼️ Ваша отформатированная дата: **"04/13/2021"**

Этот формат будет понятен в любой момент времени!

Современные подходы: метод ES2017

Для более современной работы с датами используйте метод String.prototype.padStart():

JS
Скопировать код
function formatDateModern(d) {
  const pad = (n) => String(n).padStart(2, '0');
  return `${pad(d.getMonth() + 1)}/${pad(d.getDate())}/${d.getFullYear()}`;
}

console.log(formatDateModern(new Date())); // Результат: "MM/dd/yyyy"

Избегайте путаницы: mm против MM

Обратите внимание, что некорректное использование mm (минуты) и MM (месяцы) может привести к ошибкам форматирования.

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

  1. Как отформатировать дату на JavaScript? – Stack Overflow — здесь вы найдете подробную информацию о форматировании дат на JavaScript.
  2. Метод toLocaleDateString() объекта Date – JavaScript | MDN — обзор с полезной информацией о методе toLocaleDateString().
  3. Конструктор Intl.DateTimeFormat() – JavaScript | MDN — руководство по созданию различных форматов даты и времени с помощью Intl.DateTimeFormat.
  4. Подробное руководство по работе с датами в JavaScript — обзор работы с датами без использования сторонних библиотек.
  5. Moment.js | Документация — полное руководство по использованию библиотеки Moment.js.
  6. Day.js · 2kB JavaScript библиотека, посвящённая работе с датами — сайт Day.js, одной из лучших библиотек для работы с датами на JavaScript.
  7. Справочник по объекту Date в JavaScript — полный справочник по объекту Date от W3Schools.