Я пытаюсь вставить события в календарь. проблема в том, что мои мероприятия структурированы так: xx/xx/xxxx
и в календаре используется другой формат
xx-xx-xxxx
. Как мне сделать это преобразование?
Я преобразовал даты из формата JSON в строку, но не могу изменить /
на -
.
data.forEach(function (element) {
let date = new Date(element.sessionDate)
datesArr.push(date.toLocaleDateString())
})
console.info(datesArr)
И теперь мой массив выглядит так:
0: "12/24/2018"
1: "12/27/2018"
2: "1/3/2019"
3: "1/3/2019"
4: "1/7/2019"
Мой ожидаемый результат для календаря для получения событий должен быть: ['2019-03-04', '2019-03-08', '2019-03-12', '2019-03-15']
.
самый быстрый способ - использовать moment.js. Я знаю, что это еще одна зависимость, но она избавляет вас от головной боли при работе со строками: momentjs.com
Что такое «формат JSON» для даты, в спецификации для дат ничего нет!
Возможный дубликат Где я могу найти документацию по форматированию даты в JavaScript?
Есть несколько способов сделать это:
Вы можете заменить их с помощью регулярного выражения, а затем снова склеить совпадающие значения.
const input = '12/24/2018';
const parts = input.split('/');
const output = `${parts[2]}-${parts[0]}-${parts[1]}`;
console.info(new Date(output));
Вы можете заменить их с помощью регулярного выражения, а затем снова склеить совпадающие значения.
const input = '12/24/2018';
const output = input.replace(/(\d{1,2})/(\d{1,2})/(\d{4})/, '$3-$1-$2');
console.info(new Date(output));
Идеальное объяснение!
Разделение строкового значения с помощью разделения "/" дает массив результатов. Затем присоединитесь к массиву с помощью «-», чтобы вернуть результат строки. Используйте Array.map() для преобразования в новый массив.
const dates = ['2019/03/04', '2019/03/08', '2019/03/12', '2019/03/15'];
const formattedDates = dates.map( date => date.split("/").join("-"));
console.info(formattedDates); //["2019-03-04", "2019-03-08", "2019-03-12", "2019-03-15"]
Привет. могу ли я поделиться с вами своим кодом, чтобы вы могли помочь мне вставить в него это решение?
Да, пожалуйста, поделитесь. Я хочу тебе помочь.
вы можете изменить формат даты с помощью datePipe angular.io/api/common/DatePipe