Javascript Date()函数,异常

Javascript Date() function, abnormalities

我最近遇到 javascript 中日期不可靠的问题。

这是您可以在自己的浏览器控制台中测试以重现问题的示例。

s = new Date(0); s.setYear(2015); s
//Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time)

s.setMonth(5); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)

s.setMonth(6); s
//Wed Jul 01 2015 18:00:00 GMT-0500 (Central Daylight Time)

如您所见,设置月份 5(六月)与 6(七月)相同,均为 return 七月。 这通过使用 --new Date() 而不是 new Date(0) 来解决。

我只是想了解为什么会这样。 重申,想了解为什么。 谁能描述这种行为?

https://wordpress.org/support/topic/front-end-submit-events-off-by-1month?replies=5#post-7059058

这里讨论了问题的原因:javascript new Date(0) class shows 16 hours?

因此,在您的情况下,不要在 Date() 中传递 0;

var s = new Date(); s.setYear(2015);

document.write(s);
document.write("<br/>");

s.setMonth(5);

document.write(s);
document.write("<br/>");


s.setMonth(6); 

document.write(s)

  • 日期最初是 2015 年 12 月 31 日
  • s.setMonth(5) 将月份设置为 6 月(月份为零索引),因此您将日期设置为 2015 年 6 月 31 日.
  • 没有这样的日期(即 6 月有 30 天),因此它滚动到 2015 年 7 月 1 日
  • 使用 s.setMonth(6) 将月份设置为 7 月没有任何作用,因为日期已经是 7 月了。

new Date() 使用当前日期(今天不是 31 号),因此不会发生这种 31 比 1 的翻转。