代码之家  ›  专栏  ›  技术社区  ›  developer

Javascript date set month未正确设置月份

  •  0
  • developer  · 技术社区  · 6 年前

    如果Javascript setMonth方法用于31,则它看起来不会正确更改month。

    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);
    

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   basarat    6 年前

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

    就在前一天:

    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);
    
        2
  •  2
  •   Jonas Wilms    6 年前
      let previous = event.getMonth();
      while(event.getMonth() === previous)
        event.setDate(event.getDate() - 1);
    

    每天都回去。