gpt4 book ai didi

javascript - 如何在 javascript 中获取当前日期的一周中的 7 天?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:29 25 4
gpt4 key购买 nike

(首先,抱歉我的英语不好,我是初学者)

我有一张按日期显示的百分比图表。我想在 x 轴上显示当前一周的每一天。

所以,我试图找到如何获得一周中的七天。这就是我所拥有的:

var curr = new Date; // get current date
var first = curr.getDate() - curr.getDay();//to set first day on monday, not on sunday, first+1 :

var firstday = (new Date(curr.setDate(first+1))).toString();

for(var i = 1;i<7;i++){
var next = first + i;
var nextday = (new Date(curr.setDate(next))).toString();
alert(nextday);
}

警报开始很好......直到月底。这就是我得到的:

1 : "Mon 27 Feb 2012 ..."
2 : "Tue 28 Feb 2012 ..."
3 : "Wed 29 Feb 2012 ..."
4 : "Thu 01 Mar 2012 ..."
5 : "Sat 31 Mar 2012 ..."
6 : "Sun 01 Apr 2012 ..."

因此,如您所见,它切换到星期五并且...奇怪地切换到好日期...4 周后...

那么,你有没有更好的解决方案,或者你可以帮我说说问题是什么。

谢谢!

最佳答案

恐怕您已落入众多对象突变陷阱之一。 :)

问题在于,在“var nextday = ...”行中,您通过调用 setDate() 在每次迭代中更改保存在“curr”中的日期。只要 next 在当月范围内就没问题; curr.setDate(next) 在这种情况下相当于前进一个。

next 达到 30 时,问题就开始了。没有 2 月 30 日,所以 setDate() 循环到下个月,产生 3 月 1 日 - 到目前为止超好的。不幸的是,下一次迭代调用 curr.setDate(31),因为 curr 是 3 月 1 日(记住 curr 引用的对象在每次迭代中都会更改),我们得到... 3 月 31 日!其他奇怪的值可以用同样的方式解释。

解决此问题的方法是在每次迭代时复制 curr然后调用 setDate(),如下所示:

for (var i = 1; i < 7; i++) {
var next = new Date(curr.getTime());
next.setDate(first + i);
alert(next.toString());
}

关于javascript - 如何在 javascript 中获取当前日期的一周中的 7 天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9501596/

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