Добавление ведущих нулей к дате в JavaScript: способы
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Когда нужен быстрый результат, вашим спасителем станет метод .padStart()
:
const добавитьНули = (число) => String(число).padStart(2, '0');
const форматироватьДата = (дата) => `${дата.getFullYear()}-${добавитьНули(дата.getMonth() + 1)}-${добавитьНули(дата.getDate())}`;
console.log(форматироватьДата(new Date())); // Вывод: "ГГГГ-ММ-ДД"
С помощью функции добавитьНули
числа всегда будут выглядеть двузначными.
Работа с локализацией, временем, библиотеками и особыми случаями
Форматирование с учетом локализации
Если требуется учет разных локалей, воспользуйтесь методом Date.prototype.toLocaleDateString
:
const локализоватьДата = (дата) => дата.toLocaleDateString('ru-RU', {
year: 'numeric',
month: '2-digit',
day: '2-digit'
});
Для дополнительной настройки локализации подойдет Intl.DateTimeFormat
:
const настройки = { year: 'numeric', month: '2-digit', day: '2-digit' };
const форматировщик = new Intl.DateTimeFormat('ru-RU', настройки).format;
console.log(форматировщик(new Date())); // "ДД/ММ/ГГГГ"
Форматирование времени
Не забывайте о времени — используйте Date.prototype.toLocaleTimeString
:
const локализоватьВремя = (дата) => дата.toLocaleTimeString('ru-RU', {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
Библиотека Moment.js
Для сложной работы со временем может пригодиться библиотека Moment.js:
const moment = require('moment');
console.log(moment(new Date()).format('YYYY-MM-DD')); // Корректное форматирование даты
Но помните о важности оптимизации производительности.
Объекты Temporal
Если стандартные объекты Date недостаточны, можно обратиться к Temporal:
const { Temporal } = require('@js-temporal/polyfill');
const будущее = Temporal.PlainDate.from({ year: 10000, month: 1, day: 1 });
console.log(будущее.toString()); // "10000-01-01"
Визуализация
Проиллюстрируем цифры, приобретающие дополнительные нули для того, чтобы стать двузначными:
Нагрудный знак героя: 5 превращается в 💎 "05"
Нагрудный знак героя: 19 сохраняет свой вид 🦸♀️ "19"
Нагрудный знак героя: 2 превращается в 🦹♂️ "02"
JS-волшебник придаст им новое изящество:
const подготовитьКЗначку = число => String(число).padStart(2, '0');
Теперь эти цифры могут выступать в роли нагрудных значков:
До преобразования: [1, 2, 3]
После преобразования: ["01", "02", "03"]
Производительность, совместимость и валидация
Анализ производительности
Несмотря на простоту использования встроенных методов, не забывайте о производительности, особенно при работе с большими объемами данных.
Совместимость
Для поддержки всех браузеров используйте полифиллы или альтернативы для новых методов, таких как Intl
или padStart
.
Отладка
Будьте внимательны к возможным проблемам при форматировании и всегда проводите валидацию данных.
Полезные материалы
- Добавление ведущих нулей к дате в JavaScript – Stack Overflow — обсуждение ведущих нулей.
- Date.prototype.toLocaleDateString() – JavaScript | MDN — документация Mozilla на
toLocaleDateString
. - String.prototype.padStart() – JavaScript | MDN — справочник по методу
padStart
. - Методы работы с датами в JavaScript — как взаимодействовать с датами в JavaScript.
- Всё, что вам нужно знать о датах в JavaScript | CSS-Tricks — комплексный обзор работы с датами.
- Как форматировать дату в JavaScript — гайд по форматированию дат без использования библиотек.