Javascript 为什么这个JS函数返回了错误的日期?
我使用JS函数读取JSON格式,如下所示:Javascript 为什么这个JS函数返回了错误的日期?,javascript,json,date,Javascript,Json,Date,我使用JS函数读取JSON格式,如下所示: { "metrics": { "2018-12-28 12:00:00": { "20": 19 }, "2018-12-28 13:00:00": { "20": 76 }, "2018-12-28 14:00:00": { "20": 39 } } } 根据该文件,我创建了一个新对象,日期为“2018-12-28”,编号为“20”。以下是函数: let op = {} for(let key in names){ l
{
"metrics": {
"2018-12-28 12:00:00": {
"20": 19
},
"2018-12-28 13:00:00": {
"20": 76
},
"2018-12-28 14:00:00": {
"20": 39
}
}
}
根据该文件,我创建了一个新对象,日期为“2018-12-28”,编号为“20”。以下是函数:
let op = {}
for(let key in names){
let temp = new Date(key);
let fullDate = temp.getFullYear()+'-'+temp.getMonth()+'-'+temp.getDate();
if(op[fullDate]){
for(let val in names[key])
{
if(op[fullDate][val])
op[fullDate][val] += names[key][val]
else op[fullDate][val] = names[key][val]
}
} else {
op[fullDate] = {...names[key]};
}
}
问题是函数输出的日期比“2018-12-28”晚了一个月(“2018-11-28”而不是“2018-12-28”),我一辈子都不知道为什么。非常感谢您的帮助。请参阅:
月份是以0为基础的,所以一月是0,十二月是11。getMonth()
是以零为基础的。您只需添加1即可获得所需的结果
从0开始计数而不是从1开始计数?请注意,在Safari中,
新日期(“2018-12-28 12:00:00”)
产生无效日期。强烈建议不要使用内置解析器。是的,添加+1解决了这个问题。非常感谢。请标记为正确:)