【发布时间】:2016-05-06 09:44:15
【问题描述】:
我有一个 javascript 函数,它计算两个日期之间的工作日,它可以工作,但问题是它不考虑假期。如何修改此函数,例如在异常数组中添加假期?
在网上搜索了这个问题,但没有找到关于假期异常的信息。
例如假期数组:
var holidays = ['2016-05-03','2016-05-05'];
我有一个函数来计算这个:
function workingDaysBetweenDates(d0, d1) {
var startDate = parseDate(d0);
var endDate = parseDate(d1);
// Validate input
if (endDate < startDate)
return 0;
// Calculate days between dates
var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
startDate.setHours(0,0,0,1); // Start just after midnight
endDate.setHours(23,59,59,999); // End just before midnight
var diff = endDate - startDate; // Milliseconds between datetime objects
var days = Math.ceil(diff / millisecondsPerDay);
// Subtract two weekend days for every week in between
var weeks = Math.floor(days / 7);
days = days - (weeks * 2);
// Handle special cases
var startDay = startDate.getDay();
var endDay = endDate.getDay();
// Remove weekend not previously removed.
if (startDay - endDay > 1)
days = days - 2;
// Remove start day if span starts on Sunday but ends before Saturday
if (startDay == 0 && endDay != 6)
days = days - 1
// Remove end day if span ends on Saturday but starts after Sunday
if (endDay == 6 && startDay != 0)
days = days - 1
return days;
}
function parseDate(input) {
// Transform date from text to date
var parts = input.match(/(\d+)/g);
// new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // months are 0-based
}
在jsfiddle中做了一个例子:
也许还有一些其他功能可以在 Jquery 中轻松使用?
【问题讨论】:
-
发帖前请先搜索。这已被反复询问和回答。
-
“我有一个函数来计算这个。” 如果它们与问题相关,请将它们放在问题中(不仅仅是链接)。如果没有,可能不值得一提。
-
@Kosmo ,您在哪里看到有节假日例外情况?
-
@Kosmo,它不是重复的,因为它正在寻找随机假期,而不仅仅是周日或周六。 AlexIL,请检查我的答案。
-
对不起,我理解错了。我删除了我的评论
标签: javascript jquery