Javascript 循环使用json并更改日期格式

Javascript 循环使用json并更改日期格式,javascript,json,date,Javascript,Json,Date,您好,我在变量中存储了一些数据,如下所示: var myData = { "results": [ { "time": "20040203", "count": 2 }, { "time": "20040205", "count": 1 }, { "time": "20040206",

您好,我在变量中存储了一些数据,如下所示:

var myData = {
    "results": [
        {
            "time": "20040203",
            "count": 2
        },
        {
            "time": "20040205",
            "count": 1
        },
        {
            "time": "20040206",
            "count": 1
        },
        {
            "time": "20040209",
            "count": 2
        },
        {
            "time": "20040210",
            "count": 2
        },
        {
            "time": "20040211",
            "count": 4
        }
    ]
}
我正在编写的函数需要日期采用
date.parse()
使用的格式,例如
2013年1月1日星期二16:00:00 GMT-0800(PST)

我还认为,如果更容易的话,2003-01-01格式也会起作用

这是可能的吗?如果可能的话,有人能给我一些示例代码或者给我指出正确的方向吗

谢谢

const myData={
“结果”:[
{
“时间”:“20040203”,
“计数”:2
},
{
“时间”:“20040205”,
“计数”:1
},
{
“时间”:“20040206”,
“计数”:1
},
{
“时间”:“20040209”,
“计数”:2
},
{
“时间”:“20040210”,
“计数”:2
},
{
“时间”:“20040211”,
“计数”:4
}
]
};
myData.results.forEach(结果=>{
if(parseInt(result.time))
result.time=新日期(parseInt(result.time)).toString();
});

console.log(myData)您可以使用
replace
和正则表达式将连字符从YYYYMMDD插入YYYY-MM-DD格式:

const myData={
“结果”:[
{
“时间”:“20040203”,
“计数”:2
},
{
“时间”:“20040205”,
“计数”:1
},
{
“时间”:“20040206”,
“计数”:1
},
{
“时间”:“20040209”,
“计数”:2
},
{
“时间”:“20040210”,
“计数”:2
},
{
“时间”:“20040211”,
“计数”:4
}
]
};
myData.results.forEach(结果=>{
result.time=result.time.replace(/(..)(..)(..)/,“$1-$2-$3”);
});
console.log(myData)您的“时间”字符串非常奇怪,但我假设“20040203”是2004-02-03还是2004年2月3日

您可以很容易地编写一个函数来拆分这些数字并格式化它们,或者您也可以使用一个非常好的库,如

有了
力矩
,它将非常简单:

myData.results.forEach(result => {
  result.time = moment(result.time, 'YYYYMMDD').toDate(); 
  // or use .format('MM-DD-YYYY') or whatever format you like instead of .toDate()
});

下面的代码将解析相应日期对象中格式为“yyyyymmdd”
的字符串。调用Date#toString()会像2004年2月3日星期二00:00:00
那样打印它,后面跟着您的时区

您可能需要看一看

例如:

var date = parseDate('20040203');
console.log(date.toString());
// prints "Tue Feb 03 2004 00:00:00 GMT+0100 (CET)"
因此,您可以在数据集中使用
parseDate
函数:

myData.results.forEach(result => {
  result.date = parseDate(result.time);
});

是的。下一个问题!你知道日期应该在哪个时区吗?数据中没有足够的信息知道它应该是-0800。那些
“time”
值与JavaScript时间值不相似,除非它们都是1969年左右的日期。例如,在dev tools JavaScript控制台中尝试一下,看看它打印了什么:
newdate(20040211)
我想
time
属性使用yyyyymmdd格式。嘿,gavin谢谢你的回答,这会以正确的格式输出数据,但不幸的是日期是错误的。它给出了1969年12月31日星期三的多个实例,当真实数据年从2004年开始时,谢谢你的回答,我不想使用外部库,但是如果我找不到其他解决方案,我会告诉你我是否使用了这个库,它是否工作你好,你从哪里得到
result.date
中的变量
date
?不管怎样,我知道你在做什么。您正在向数据集中的每个对象添加一个可变日期。这对我很有用。谢谢
myData.results.forEach(result => {
  result.date = parseDate(result.time);
});