为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript Array unshift new Date减去1天

Javascript Array unshift new Date减去1天

慕桂英3389331 2021-06-08 13:01:39
我从以下代码中得到了一些奇怪的结果: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 日有人能告诉我我在这里做错了什么吗?
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

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

调用.setDate() 可以更改月份,但仅当月份中的某天没有意义时,或者更小(零或负)或更大(如 33)。由于 30 确实是六月中的真实日子,因此月份不会改变。


查看完整回答
反对 回复 2021-06-18
?
隔江千里

TA贡献1906条经验 获得超10个赞

在这里,我将您的代码修改为您想要的反应:


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(a[0]));

a[0].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(a[0]));

a[0].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(a[0]));

a[0].setDate(a[0].getDate()-1);

console.log("Third Unshift: "+a.length + " - " + a.toString());


查看完整回答
反对 回复 2021-06-18
  • 2 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信