gpt4 book ai didi

Javascript Date 对象奇怪的行为/错误?

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

我正在使用 javascript Date 对象并看到非常奇怪的行为。如果我继续将日期对象设置为另一个日期对象 + 偏移量,它会开始增加 30 天左右。如果我在两次尝试之间重置日期对象,或者如果我对同一个对象进行日期数学运算,它会按预期工作。

可能更容易看到我在最新的 chrome/ff 中运行的测试台:

var date = new Date();
console.log("start:", date);

var test = new Date();
test.setDate( date.getDate() + 1 );
console.log("test1:", date, test);
test.setDate( date.getDate() + 1 );
console.log("test2:", date, test);
test.setDate( date.getDate() + 1 );
console.log("test3:", date, test);

test = new Date();
test.setDate( date.getDate() + 1 );
console.log("test reset 1:", date, test);
test = new Date();
test.setDate( date.getDate() + 1 );
console.log("test reset 2:", date, test);
test = new Date();
test.setDate( date.getDate() + 2 );
console.log("test reset 3:", date, test);

test = new Date();
test.setDate( test.getDate() + 1 );
console.log("test selfref 1:", test);
test.setDate( test.getDate() + 1 );
console.log("test selfref 2:", test);

我得到的输出:

"start:" Tue May 31 2011 13:09:13 GMT-0400 (EDT)
"test1:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Wed Jun 01 2011 13:09:13 GMT-0400 (EDT)
"test2:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Sat Jul 02 2011 13:09:13 GMT-0400 (EDT)
"test3:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Mon Aug 01 2011 13:09:13 GMT-0400 (EDT)
"test reset 1:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Wed Jun 01 2011 13:09:13 GMT-0400 (EDT)
"test reset 2:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Wed Jun 01 2011 13:09:13 GMT-0400 (EDT)
"test reset 3:" Tue May 31 2011 13:09:13 GMT-0400 (EDT) Thu Jun 02 2011 13:09:13 GMT-0400 (EDT)
"test selfref 1:" Wed Jun 01 2011 13:09:13 GMT-0400 (EDT)
"test selfref 2:" Thu Jun 02 2011 13:09:13 GMT-0400 (EDT)

因此您可以看到 test1-3 的原始日期对象保持不变,但应始终为原始日期 + 1 天的测试对象到处都是。

随后重置测试和 selfref 测试似乎按预期工作。

这是一个错误还是我误解了什么?

费利克斯

最佳答案

您正在通过调用设置一个月中的某一天。由于今天是 31 日,您将日期设置为 32 日,这反过来又为您提供了下个月(通过减去其中的天数)。每次调用都在修改日期,因此日期在增加。虽然后续调用 setDate(1) 不会进行任何更改,但调用 setDate(32) 会将对象“移动”到下个月。

关于Javascript Date 对象奇怪的行为/错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6191078/

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