已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
三年前就关门了。
Improve this question
我想打印start_date和end_date之间的所有日期,不包括周末(周六、周日)。我想要jquery代码。
我能计算出两个日期之间的天数,不包括周末,但不知道如何获得所有日期。
我试过这个代码。
function getBusinessDateCount (startDate, endDate) {
var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday;
var ifThen = function (a, b, c) {
return a == b ? c : a;
};
elapsed = endDate - startDate;
elapsed /= 86400000;
daysBeforeFirstSunday = (7 - startDate.getDay()) % 7;
daysAfterLastSunday = endDate.getDay();
elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday);
elapsed = (elapsed / 7) * 5;
elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5);
return Math.ceil(elapsed);
}
这是给我没有周末的日子,假设我选择的日期从星期五到星期一,那么只有2天将被给予。
1条答案
按热度按时间ryevplcw1#
下面的代码将遍历给定时间范围内的所有日期,如果日期不是星期六或星期日,则将日期推送到数组中。它不考虑公共假日,并使用Vanilla JS(不需要jQuery)。
正如您所看到的,我使用
.getDay()
来确定给定日期是星期几,并检查它不等于6(星期六)或0(星期日)。然后我把它推到
dates
数组中,在你认为合适的时候使用。我使用.push(new Date(current))
而不是简单的.push(current)
的原因是.setDate
函数替换变量指向的值,如果没有它,会导致数组中充满相同的日期x次。可以完全删除
current
变量,并更改代码以使用start
变量,但我喜欢创建一个新变量,只是为了可读性。