所以,我想让我的剧本弄清楚学期的最后一天。它需要运行,直到当前日期小于该季度的最后一天(如前所述)。它无论如何都会继续运行。 ps,我认为问题可能是它没有重置“lastDayofQuarter”(至少在循环之外)。我怎么能绕过这个呢?万分感谢!
var today = new Date();
var lastDayofQuarter=new Date();
var lastDaysofQuarter=new Array();
lastDaysofQuarter[0]=(2009,11,3);
lastDaysofQuarter[1]=(2010,11,10);
lastDaysofQuarter[2]=(2011,4,18);
lastDaysofQuarter[3]=(2011,5,10);
lastDayofQuarter.setFullYear(lastDaysofQuarter[0]);
i=0;
while (lastDayofQuarter<today) {
lastDayofQuarter.setFullYear(lastDaysofQuarter[i]);
i++;
}
答案 0 :(得分:2)
这些行在语法上是有效的,但它们无法正常工作:
lastDaysofQuarter[0]=(2009, 11, 3);
// ...
comma operator计算其两个操作数(从左到右)并返回第二个操作数的值。因此,(2009, 11, 3)
只会返回3
。
看起来你想要做的事情:
lastDaysofQuarter[0] = new Date(2009, 11, 3);
// ...
答案 1 :(得分:1)
setFullYear不接受Date作为参数 - 它接受一个 - 三个整数,表示该月的年,月和日。
您的脚本将执行您使用的操作,只需将数组中的值分配给lastDayofQuarter
,而不是使用setFullYear
:
lastDaysofQuarter[0]=new Date(2009,11,3);
lastDaysofQuarter[1]=new Date(2010,11,10);
lastDaysofQuarter[2]=new Date(2011,4,18);
lastDaysofQuarter[3]=new Date(2011,5,10);
lastDayofQuarter = lastDaysofQuarter[0];
i=1;
while (lastDayofQuarter<today) {
lastDayofQuarter = lastDaysofQuarter[i];
i++;
}