gpt4 book ai didi

Javascript 数组 unshift 新日期减去 1 天

转载 作者:行者123 更新时间:2023-11-30 11:04:07 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com