您好我有一些数据存储在变量中,如下所示:
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()
使用的格式,例如Tue Jan 01 2013 16:00:00 GMT-0800 (PST)
我还认为如果更容易,格式2003-01-01也会起作用。
这可能吗?如果可以的话,任何人都可以向我发送示例代码或指向正确的方向吗?
谢谢!
答案 0 :(得分:3)
const 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
}
]
};
myData.results.forEach(result => {
if (parseInt(result.time))
result.time = new Date(parseInt(result.time)).toString();
});
console.log(myData);
答案 1 :(得分:2)
您可以使用replace
和正则表达式注入连字符以从YYYYMMDD到YYYY-MM-DD格式:
const 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
}
]
};
myData.results.forEach(result => {
result.time = result.time.replace(/(....)(..)(..)/, "$1-$2-$3");
});
console.log(myData);
答案 2 :(得分:2)
你的“时间”字符串很奇怪,但我假设“20040203”是2004-02-03还是2004年2月3日?
您可以轻松编写一个函数来分割这些数字并格式化它们,或者您可以使用一个非常好的库,如https://momentjs.com/
使用moment
就可以了:
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()
});
答案 3 :(得分:1)
以下代码将解析相应日期对象中格式为"YYYYMMDD"
的字符串。调用日期#toString()会将其打印为Tue Feb 03 2004 00:00:00
,后跟您的时区。
您可能需要查看Date's documentation。
var parseDate = function (str) {
var year = parseInt(str.substr(0, 4), 10);
var month = parseInt(str.substr(4, 2), 10) - 1;
var day = parseInt(str.substr(6, 2), 10);
return new Date(year, month, day);
}
例如:
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);
});