JavaScript日期setMonth不能正确设置月份

时间:2018-08-03 10:30:23

标签: javascript typescript

如果Java语言setMonth方法用于31日,它似乎无法正确更改月份。

var event = new Date('July 31, 2018 10:48:30');

console.log(event.getMonth());
// output: 6

// Change to previous month
event.setMonth(event.getMonth() - 1);

console.log(event.getMonth());
// expected output: 5 actual output: 6

console.log(event);

是否有更好的选择来更改月份并将日期设置为30号(如果该月份不是31号)?

2 个答案:

答案 0 :(得分:2)

  let previous = event.getMonth();
  while(event.getMonth() === previous)
    event.setDate(event.getDate() - 1);

每天都回去。

答案 1 :(得分:1)

  

是否有更好的选择来更改月份并将日期设置为30号(如果该月份不是31号)?

就在前一天:

var event = new Date('July 31, 2018 10:48:30');

console.log(event.getMonth());

// Change to previous month
var current = event.getMonth();
event.setMonth(current - 1);
if (event.getMonth() === current) {
  event.setDate(event.getDate() - 1);
}

console.log(event.getMonth());
// actual output: 5

console.log(event);
相关问题