Как преобразовать даты JSON в формат календаря?

Я пытаюсь вставить события в календарь. проблема в том, что мои мероприятия структурированы так: 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'].

вы можете изменить формат даты с помощью datePipe angular.io/api/common/DatePipe

Jon Fernandez 08.04.2019 16:33

самый быстрый способ - использовать moment.js. Я знаю, что это еще одна зависимость, но она избавляет вас от головной боли при работе со строками: momentjs.com

rufus1530 08.04.2019 16:38

Что такое «формат JSON» для даты, в спецификации для дат ничего нет!

phuzi 08.04.2019 16:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
134
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Есть несколько способов сделать это:

Версия массива

Вы можете заменить их с помощью регулярного выражения, а затем снова склеить совпадающие значения.

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));

Или используя библиотеку типа момент.js

Идеальное объяснение!

FranzHuber23 08.04.2019 16:45

Разделение строкового значения с помощью разделения "/" дает массив результатов. Затем присоединитесь к массиву с помощью «-», чтобы вернуть результат строки. Используйте 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"]

Привет. могу ли я поделиться с вами своим кодом, чтобы вы могли помочь мне вставить в него это решение?

Raz 08.04.2019 17:50

Да, пожалуйста, поделитесь. Я хочу тебе помочь.

Razana N. 08.04.2019 17:56

Другие вопросы по теме