【发布时间】:2015-08-24 22:52:31
【问题描述】:
我正在尝试获取某个日期所在月份的第 n 个工作日(例如,第二个星期日)。
例如,如果日期是 2015 年 8 月 24 日,我想这样做:
nthDayOfMonth(0, 2, new Date(2015, 7, 24))
并获得 2015 年 8 月 9 日(8 月的第二个星期日)。然后我希望能够在日期上添加一个月,再次调用该函数,并获得 2015 年 9 月 13 日(9 月的第二个星期日)。
由于某种原因,以下代码无法正常工作。
我错过了什么?
function nthDayOfMonth(day, n, date) {
console.log(day);
console.log(n);
var count = 0;
var idate = new Date(date);
idate.setDate(1);
while ((count) < n) {
idate.setDate(idate.getDate() + 1);
if (idate.getDay() == day) {
count++;
}
}
return idate;
}
【问题讨论】:
-
您是否考虑到月份是从 0 开始的(例如 8 月 == 7)
-
另外,我想今天实际上是 8/24/15,而不是 9/24/15。
-
哇....它计算正确,我只是没有正确阅读计算器。
-
我刚刚修改了我的答案,加入了一种直接计算所需日期的方法。没有循环!
标签: javascript algorithm date