Однострочники 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. Я знаю, что у меня будет много компании.

Как вы придумываете однострочник, чтобы сделать то же самое?

Вот мои взгляды на эту проблему:

  1. Используйте Date.prototype.toISOString() вместе с регулярным выражением replace(), потому что toISOString() всегда дополняет нулями месяци день месяца.
console.log(new Date().toISOString().replace(/(\d+)-(\d+)-(\d+).+/, “$2/$3/$1”))

Но проблема с toISOString() в том, что часовой пояс всегда UTC, что может вызвать проблемы, если вы хотите…