Gae*_*lle 5 javascript date weekday dayofweek
(首先,抱歉我的英语不好,我是初学者)
我有一个按日期显示的百分比图表。我想在 x 轴上显示当前周的每一天。
所以,我试图找到如何获得一周中的 7 天。这就是我所拥有的:
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);
}
Run Code Online (Sandbox Code Playgroud)
警报开始得很好......直到月底。这就是我得到的:
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 ..."
Run Code Online (Sandbox Code Playgroud)
所以,正如你所看到的,它切换到星期五......奇怪的是它切换到好日期......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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7444 次 |
| 最近记录: |