选择日期之后的日期不包括周末和假日 [英] Add days after date is selected excluding weekends and holidays
问题描述
但是,它应该排除周末和假期,只显示30个工作日。如何做到这一点?
if($('#cat option:selected')。 ){
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_over);
$('#datepd')。val(date_over).prop('readonly',true);
}
更新:我已经添加了noWeekendsOrHolidays的功能禁止周末或假期。有没有办法我可以使用这个函数来计算和添加工作日期?
//假期
var natDays = [
[7,4,'us']
];
函数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 非常有帮助。
代码:
函数AddBusinessDays(weekDaysToAdd){
var curdate = new Date();
var realDaysToAdd = 0;
while(weekDaysToAdd> 0){
curdate.setDate(curdate.getDate()+ 1);
realDaysToAdd ++;
//检查当前日是否是营业日
如果(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_over);
$('#datepd')。val(date_over).prop('readonly',true);
I have two text fields. In the first textfield I have added a calendar using jQueryUI Datepicker. When the user selects the date from the datepicker, it should automatically add 30 days to the date and set this value in the second textfield. I've got this working to add 30 days to the date.
However, it should exclude weekends and holidays and display only 30 business days. How do I do this?
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);
}
Update: I have added the function noWeekendsOrHolidays to disable weekends or holidays. Is there anyway I can use this function to calculate and add business days to the date?
//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, ''];
}
Solved it! This answer here helped tremendously.
Code:
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);
这篇关于选择日期之后的日期不包括周末和假日的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!