Javascript 数组 unshift 新日期减去 1 天

标签 javascript arrays

我从以下代码中得到了一些奇怪的结果:

a = [];
a[0] = new Date();
console.log("1 Element Added: "+a.length + " - " + a.toString());

//"1 Element Added: 1 - Sun Jun 02 2019 12:13:35 GMT-0400 (Eastern Daylight Time)"


a.unshift(new Date(new Date(new Date().setDate(a[0].getDate() - 1))));
console.log("First Unshift: "+a.length + " - " + a.toString());

//"First Unshift: 2 - Sat Jun 01 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Sun Jun 02 2019 12:13:35 GMT-0400 (Eastern Daylight Time)"


a.unshift(new Date(new Date(new Date().setDate(a[0].getDate() - 1))));
console.log("Second Unshift: "+a.length + " - " + a.toString());

//"Second Unshift: 3 - Fri May 31 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Sat Jun 01 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Sun Jun 02 2019 12:13:35 GMT-0400 (Eastern Daylight Time)"


a.unshift(new Date(new Date(new Date().setDate(a[0].getDate() - 1))));
console.log("Third Unshift: "+a.length + " - " + a.toString());

//"Third Unshift: 4 - Sun Jun 30 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Fri May 31 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Sat Jun 01 2019 12:13:35 GMT-0400 (Eastern Daylight Time),Sun Jun 02 2019 12:13:35 GMT-0400 (Eastern Daylight Time)"

相同的代码在第 1 次和第 2 次运行,但第 3 次运行给出了意想不到的结果 - 应该是 2019 年 5 月 30 日星期四,而不是 2019 年 6 月 30 日有人可以告诉我我在这里做错了什么吗?

提前致谢。

最佳答案

最里面的 new Date() 总是在六月创建一个 Date 实例。当您将日期设置为 30 时,您会将日期强制设置为 6 月 30 日,而不是 5 月 30 日。

调用 .setDate() 可以更改月份,但只有当日期是没有意义的东西时,要么更小(零或负)或更大(如 33)。由于 30 确实是 6 月的真实日期,因此月份不会改变。

关于Javascript 数组 unshift 新日期减去 1 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56416866/

相关文章:

c++ - 获取数组中以 0 结尾的最大元素

javascript - 如何使用 jquery 将单选按钮值存储在 sessionStorage 中

java - 我的 while 循环做错了什么?

javascript - 如何提取仅在 Javascript 中具有多个值的数组数据?

javascript - 常量脚本 -> 更改 src iframe (1min, 5min) + jQuery

java - “镜像”二维数组 [Java]

arrays - 序幕,骑士攻击

javascript - 如何将JavaScript模块添加到generator-meanjs应用程序?

javascript - 了解 $.promise 的工作方式类似于 transitionEnd

javascript - 如何使用另一个网格为网格中的特殊单元格创建单元格编辑器,并在 ExtJs 中从中选择值?