Как создать дату в таком формате dd.mm.yyyy в hh:mm?

Приходит вот такая дата 2021-03-02T13:21:13+05:00, как ее преобразовать в "02.03.2021 в 13:21"


Ответы (2 шт):

Автор решения: Eugene X

В JS из коробки не предусмотрена форматирование даты. Можно воспользоваться библиотекой moment (https://momentjs.com/) или отформатировать в ручную.

let now = new Date();
let datestr = ("0"+now.getDay()).substr(-2) + "."
 + ("0"+(0+now.getMonth())).substr(-2) + "."
 + now.getFullYear() + " в "
 + now.getHours() + ":" + ("0"+now.getMinutes()).substr(-2)

// datestr == '02.08.2022 в 8:54'
→ Ссылка
Автор решения: Михаил Ребров

Получение даты из строки

Все современные браузеры, включая IE9+, понимают даты в упрощённом формате ISO 8601 Extended(YYYY-MM-DDTHH:mm:ss.sssZ).

Вы можете его распарсить и получить временную метку:

var timestamp = Date.parse("2021-03-02T13:21:13+05:00");

потом, вы можете прокинуть в дату эту временную метку, если надо

date.setTime(timestamp);

А можете и напрямую вкинуть ее в конструктор Date

var date = new Date("2021-03-02T13:21:13+05:00");

Замечание:
Стоит отметить что Ваша дата содержит и смещение временной зоны.
JavaScript распознает ее, но при запросе часов вернет вам соответсвующее значение из ВАШЕЙ часовой зоны.
Поэтому, если Ваша часовая зона отличается от +05 не удивляйтесь, отличающимся часам.

Кастомный формат даты

Для встроенных в локали форматов даты имеются методы toLocaleDateString()

Для кастомных же форматов приходится обходиться вручную или использовать стороние библиотеки.

Самый простой способ - решение в лоб

Можно просто взять все компоненты даты и сформировать из них строку

// получаем дату
var date = new Date("2021-03-02T13:21:13+05:00");

// функция добавляющая ведущий ноль
function leadingZero(token) {
    return ("0" + token).slice(-2)
}

var year = date.getFullYear(),
    month = leadingZero(date.getMonth() + 1), // подсчет начинается с 0, поэтому увеличим на 1
    day = leadingZero(date.getDate()),
    hours = leadingZero(date.getHours()),
    minutes = leadingZero(date.getMinutes()),
    seconds = leadingZero(date.getSeconds())

var result = `${day}.${month}.${year} в ${hours}:${minutes}`;
console.log(result);

ну и напоследок:

Самое верное решение - не изобретать велосипед

И использовать имеющиеся библиотеки, например https://momentjs.com/

→ Ссылка