gpt4 book ai didi

javascript - 将日期对象与 for 循环一起使用时得到意外的年份

转载 作者:行者123 更新时间:2023-11-28 20:03:45 29 4
gpt4 key购买 nike

为什么我会遇到像 2021 年这样意想不到的年份?

var dueDates = [];
var dDate = '2014-01-01';

dDate = new Date(dDate);

for (var i = 1; i <= 18; i++) {

dDate.setMonth(i);
dueDates.push(dDate);

}
console.log(dueDates);

演示 http://jsfiddle.net/gQ92L/

最佳答案

代码有两个问题。

  1. 您一遍又一遍地将同一个 Date 对象推送到数组中,因此最终会得到一个充满对单个 Date 对象的引用的数组。

  2. 您反复将月份值设置为高于 11 的值,因此这也会将年份向前推。当您执行 setMonth(12) 时,您最终会在 2015 年 1 月,当您执行 setMonth(13) 时,您最终会在 2016 年 2 月。直至 2021 年。

为每次迭代创建一个新的 Date 对象,并设置月份,以便始终从同一日期开始:

var dueDates = [];
var dDate = '2014-01-01';

dDate = new Date(dDate);

for (var i = 1; i <= 18; i++) {

var d = new Date(dDate.getTime());
d.setMonth(i);
dueDates.push(d);

}
console.log(dueDates);

注意:当您从 setMonth(1) 开始时,这将是二月。如果你想从一月开始,你就必须从零开始。

关于javascript - 将日期对象与 for 循环一起使用时得到意外的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193534/

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