我有两个文本字段。在第一个文本字段中,我使用 jQueryUI Datepicker 添加了一个日历。当用户从日期选择器中选择日期时,它应该自动向该日期添加 30 天,并在第二个文本字段中设置该值。我已经完成了将日期添加 30 天的工作。
但是,它应该排除周末和节假日,并且仅显示 30 个工作日。我该怎么做?
if ($('#cat option:selected').text() == "ABC") {
var date_billed = $('#datebilled').datepicker('getDate');
var date_overdue = new Date();
date_overdue.setDate(date_billed.getDate() + 30);
date_overdue = $.datepicker.formatDate('mm/dd/yy', date_overdue);
$('#datepd').val(date_overdue).prop('readonly', true);
}
更新:我添加了 noWeekendsOrHolidays 函数来禁用周末或节假日。无论如何,我可以使用此函数来计算并将工作日添加到日期中吗?
//holidays
var natDays = [
[7, 4, 'us']
];
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
最佳答案
解决了!这个答案here帮助很大。
代码:
function AddBusinessDays(weekDaysToAdd) {
var curdate = new Date();
var realDaysToAdd = 0;
while (weekDaysToAdd > 0){
curdate.setDate(curdate.getDate()+1);
realDaysToAdd++;
//check if current day is business day
if (noWeekendsOrHolidays(curdate)[0]) {
weekDaysToAdd--;
}
}
return realDaysToAdd;
}
var date_billed = $('#datebilled').datepicker('getDate');
var date_overdue = new Date();
var weekDays = AddBusinessDays(30);
date_overdue.setDate(date_billed.getDate() + weekDays);
date_overdue = $.datepicker.formatDate('mm/dd/yy', date_overdue);
$('#datepd').val(date_overdue).prop('readonly', true);
关于jquery - 选择日期后添加天数(周末和节假日除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533519/