如何将JSON日期转换为日历格式?

时间:2019-04-08 14:27:07

标签: javascript arrays json date

我正在尝试将事件插入日历。问题是我的事件的结构是这样的:xx/xx/xxxx,日历使用了另一种格式 xx-xx-xxxx。我该如何进行转换?

我已将日期从JSON格式转换为字符串,但无法将/更改为-

data.forEach(function (element) {

    let date = new Date(element.sessionDate)
    datesArr.push(date.toLocaleDateString())
})

console.log(datesArr)

现在我的数组如下:

  

0:“ 2018年12月24日”

     

1:“ 2018年12月27日”

     

2:“ 2019年1/3”

     

3:“ 2019年1/3”

     

4:“ 2019年1月7日”

我希望日历接收事件的预期结果应该是:['2019-03-04', '2019-03-08', '2019-03-12', '2019-03-15']

2 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点:

数组版本

您可以使用正则表达式替换它们,然后将匹配的值重新粘合在一起。

const input = '12/24/2018';
const parts = input.split('/');
const output = `${parts[2]}-${parts[0]}-${parts[1]}`;

console.log(new Date(output));


正则表达式版本

您可以使用正则表达式替换它们,然后将匹配的值重新粘合在一起。

const input = '12/24/2018';
const output = input.replace(/(\d{1,2})\/(\d{1,2})\/(\d{4})/, '$3-$1-$2');

console.log(new Date(output));


或使用类似moment.js的库

答案 1 :(得分:1)

通过“ /”分隔符分隔字符串值可得到结果数组。然后将数组与“-”连接起来以返回字符串结果。使用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.log(formattedDates); //["2019-03-04", "2019-03-08", "2019-03-12", "2019-03-15"]