Однострочники JavaScript для нулевого заполнения даты в коротком формате
Получение 01.07.2023 вместо 01.07.2023
В JavaScript есть функция Date.prototype.toLocaleDateString()
для получения текущей даты в виде строки даты короткого формата, подходящей для вашей локали. Если вы используете английский язык США (en-US), он возвращает что-то вроде 01.07.2023 на 1 июля 2023 года. Что делать, если вы хотите, чтобы оно было дополнено нулями для одной цифры месяц (например, 07 вместо 7 в приведенном выше примере) и одной цифры день месяца (например . 01 вместо 1 в приведенном выше примере), чтобы всегда отображались две цифры для месяцаи дня месяца?
Как и в большинстве вопросов, которые у меня возникают в эти дни, я задал ChatGPT. ChatGPT вежливо ответил:
Вот один из способов распечатать текущую дату в формате мм/дд/гггг в JavaScript:
const today = new Date(); const mm = String(today.getMonth() + 1).padStart(2, ‘0’); const dd = String(today.getDate()).padStart(2, ‘0’); const yyyy = today.getFullYear(); const currentDate = `${mm}/${dd}/${yyyy}`; console.log(currentDate);
Обратите внимание, как код ChatGPT использует String.prototype.padStart()
для дополнения месяцаи дня месяцас нулями слева.
Еще один популярный среди разработчиков метод — что-то вроде:
const today = new Date(); const todayString = ('0' + today.getDate()).slice(-2) + '/' + ('0' + (today.getMonth()+1)).slice(-2) + '/' + today.getFullYear();
Этот метод добавляет ноль к месяцу и дню, а затем slice()
s две цифры с конца.
Поднимите руку, если вы считаете, что оба эти метода, перечисленные выше, немного многословны, учитывая выразительность (выразительность?) языка JavaScript. Я знаю, что у меня будет много компании.
Как вы придумываете однострочник, чтобы сделать то же самое?
Вот мои взгляды на эту проблему:
- Используйте
Date.prototype.toISOString()
вместе с регулярным выражениемreplace()
, потому чтоtoISOString()
всегда дополняет нулями месяци день месяца.
console.log(new Date().toISOString().replace(/(\d+)-(\d+)-(\d+).+/, “$2/$3/$1”))
Но проблема с toISOString()
в том, что часовой пояс всегда UTC, что может вызвать проблемы, если вы хотите…