Как отформатировать дату в JavaScript?

Привет всем! Я тут пытаюсь разобраться, как можно красиво отформатировать дату в JavaScript. Хочу, чтобы она выглядела примерно так: 15-Сен-2023. У меня есть объект Date, но я не знаю, как его преобразовать в такую строку. Может кто-нибудь подсказать, как это сделать? Буду очень благодарен за помощь!

Вот пример того, что я пытаюсь сделать:

const сегодня = new Date();
const форматированнаяДата = форматироватьДату(сегодня);
console.log(форматированнаяДата); // Должно вывести что-то вроде '15-Сен-2023'

function форматироватьДату(дата) {
  // Как реализовать эту функцию?
}

Заранее спасибо за любые идеи!

Можно еще использовать библиотеку Moment.js - она супер удобная для работы с датами. Вот так будет выглядеть форматирование:

moment(дата).format(‘DD-MMM-YYYY’)

Правда, нужно будет еще локализацию подключить для русского языка. Зато потом с датами вообще проблем не будет!

Для такого формата даты можно использовать метод toLocaleDateString() с нужными опциями. Вот пример:

function форматироватьДату(дата) {
  return дата.toLocaleDateString('ru-RU', {
    day: '2-digit',
    month: 'short',
    year: 'numeric'
  }).replace(/[г.]/, '').replace(/ /g, '-');
}

Этот код вернет дату в формате ‘15-сен-2023’. Если нужны заглавные буквы в названии месяца, можно добавить .replace(/^.|-./g, s => s.toUpperCase()).

я тоже недавно с этим мучился. в итоге нашел простой способ без лишних библиотек. вот такая функция работает:

function форматироватьДату(дата) {
const месяцы = [‘янв’, ‘фев’, ‘мар’, ‘апр’, ‘май’, ‘июн’, ‘июл’, ‘авг’, ‘сен’, ‘окт’, ‘ноя’, ‘дек’];
const д = дата.getDate();
const м = месяцы[дата.getMonth()];
const г = дата.getFullYear();
return ${д < 10 ? '0' + д : д}-${м.charAt(0).toUpperCase() + м.slice(1)}-${г};
}

получается именно так, как ты хотел. просто и без заморочек)