JavaScript 日期增加需要考虑夏令时的问题。如果处在有夏令时的时区,会出现以下的问题。

https://stackoverflow.com/a/9989458

var a = new Date("2013-03-10T00:00:00.000Z");
a.setDate(a.getDate() + 1); 
a.toISOString(); //is "2013-03-10T23:00:00.000Z".

增加日期后,发现还是在2013-03-10 。

因为Date的构造函数解析日期字符串的行为在不同浏览器之间不一定一致。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

注意: 由于浏览器之间的差异与不一致性,强烈不推荐使用Date构造函数来解析日期字符串 (或使用与其等价的Date.parse)。对 RFC 2822 格式的日期仅有约定俗成的支持。 对 ISO 8601 格式的支持中,仅有日期的串 (例如 “1970-01-01”) 会被处理为 UTC 而不是本地时间,与其他格式的串的处理不同。

如果只是需要取日期,可以使用UTC时间。

date = date.setUTCDate(date.getUTCDate()+1);

或者,直接用年月日构造日期。

date = new Date(year, monthIndex, day)
new Date(year, monthIndex, day+1) //自己分别解析年月日