Преобразование даты в формате 'MM/dd/yyyy' в JavaScript
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Если вам нужно быстро преобразовать дату в формат MM/dd/yyyy
, воспользуйтесь следующим кодом:
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
гарантирует, что месяц и день всегда представлены двузначными числами.
Работа с нестандартными строками дат и сложностями часовых поясов
Для обработки нестандартных форматов дат и избежания проблем с часовыми поясами можно использовать объект Date
:
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
:
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"
Так можно учесть и локальные особенности, и требования к точности форматирования.
Визуализация
Допустим, вам требуется отформатировать следующую дату:
📅 Ваша текущая дата: "Tue Apr 13 2021 09:33:45 GMT+0000 (Coordinated Universal Time)"
Пример универсального форматирования даты:
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('/');
};
Теперь даты будут выводиться в формате, который вам знаком:
🖼️ Ваша отформатированная дата: **"04/13/2021"**
Этот формат будет понятен в любой момент времени!
Современные подходы: метод ES2017
Для более современной работы с датами используйте метод String.prototype.padStart()
:
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
(месяцы) может привести к ошибкам форматирования.
Полезные материалы
- Как отформатировать дату на JavaScript? – Stack Overflow — здесь вы найдете подробную информацию о форматировании дат на JavaScript.
- Метод toLocaleDateString() объекта Date – JavaScript | MDN — обзор с полезной информацией о методе
toLocaleDateString()
. - Конструктор Intl.DateTimeFormat() – JavaScript | MDN — руководство по созданию различных форматов даты и времени с помощью
Intl.DateTimeFormat
. - Подробное руководство по работе с датами в JavaScript — обзор работы с датами без использования сторонних библиотек.
- Moment.js | Документация — полное руководство по использованию библиотеки
Moment.js
. - Day.js · 2kB JavaScript библиотека, посвящённая работе с датами — сайт
Day.js
, одной из лучших библиотек для работы с датами на JavaScript. - Справочник по объекту Date в JavaScript — полный справочник по объекту
Date
от W3Schools.