jquery - 选择日期后添加天数(周末和节假日除外)

标签 jquery jquery-ui datepicker

我有两个文本字段。在第一个文本字段中,我使用 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/

相关文章:

javascript - 如何使自动完成 Jquery UI 插件动态化

javascript - 查找 td 索引并将颜色应用于 tr

iOS:通知中心警报问题

javascript - 我在 Flask 应用程序中使用 $.(get) 请求时遇到的 JavaScript 问题

jquery可调整大小的句柄在所有方面都没有显示

jquery - 闪烁容器的背景橙色(就像直接导航到答案时所做的那样)

javascript - 如何使用日期选择器将明天的日期设置为默认日期?

JavaFX DatePicker 设置日期值的对齐方式

javascript - jQuery.noConflict(); 的作用是什么? jquery-1.4.2.min.js 结尾是什么意思?

javascript - 将数据值从 HTML 传递到 JS