Как создать дату в таком формате dd.mm.yyyy в hh:mm?
Приходит вот такая дата 2021-03-02T13:21:13+05:00, как ее преобразовать в "02.03.2021 в 13:21"
Ответы (2 шт):
В 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/