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

在Javascript中,今天(31/5)添加1个月将得到1/7

  •  3
  • Chaska  · 技术社区  · 6 年前

    今天我发现如果在今天加上1个月,它就会返回1/7。

    有人能帮忙吗?非常感谢你。

    注意:我没有把日期指定给 today 因为今天是31/5,你们有些人还在30/5

    var today = new Date(); // today is 31/5 in my timezone
    console.log(today);
    today.setMonth(today.getMonth() + 1);
    console.log(today);
    1 回复  |  直到 6 年前
        1
  •  3
  •   dotnetom    6 年前

    在JavaScript中,日期的工作方式很奇怪。根据 documentation in MDN :

    本月的当前日期将对 方法。从概念上讲,它将添加 指定为每月的当前日期到新月份的第一天 参数,返回新日期。例如,如果 值为2016年8月31日,调用setMonth,值为1 will 2016年3月2日返回。这是因为2016年2月有29天。

    如果你把一个月加在5月31日,你就得到6月31日。这不是有效日期,JavaScript将其转换为7月1日

    推荐文章