Javascript 为什么这个JS函数返回了错误的日期?

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

我使用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){
    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解决了这个问题。非常感谢。请标记为正确:)