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