为什么此JS函数返回错误的日期?

时间:2019-01-02 15:23:51

标签: 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){
    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-11-28”而不是“ 2018-12-28”),而我一生都无法找出原因。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

请参阅:https://www.w3schools.com/jsref/jsref_getmonth.asp

月份是从0开始的,因此一月是0,十二月是11。

答案 1 :(得分:2)

getMonth()从零开始。您只需要加1即可获得所需的结果。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth