javascript - 计算日期之间的特定工作日并排除 Javascript 中的假期

标签 javascript momentjs

this question 开始它使用以下方法计算给定日期范围内特定工作日的数量:

function countCertainDays( days, d0, d1 ) {
  var ndays = 1 + Math.round((d1-d0)/(24*3600*1000));
  var sum = function(a,b) {
      return a + Math.floor( ( ndays + (d0.getDay()+6-b) % 7 ) / 7 );
  };
  return days.reduce(sum,0);
}

我还想知道如果假期落在范围内的工作日,如何排除假期,假设我有一系列假期发生在 d0d1.

感谢您的帮助!

最佳答案

前段时间我写了类似的脚本,也许对你有帮助:

var today = new Date();
var end = new Date(2016, 6, 1);
var allDays = Math.floor((end.getTime() - today.getTime())/ 86400000);
var holidays = [
    [15, 8],[1, 10],[17, 10],[29,9],[30,9],[23,11],[24,11],[25,11],[26,11],[27,11],[28,11],[29,11],[30,11],[31,11],[1,0],[2,0], [3,0],[4,0],[5,0],[6,0],[7,0],[1,1],[31,0],[22,1],[23,1],[24,1],[25,1],[26,1],[24,2],[25,2],[26,2],[27,2],[28,2],[29,2],[1,4],[8,4],
    ];

var days = 0;
    for(var i = 0; i < allDays; i++){
    var tmpDate = new Date();
    tmpDate.setTime(today.getTime() + i * 24*60*60*1000);
    var bool = true;
    for(var j = 0; j < holidays.length; j++){
        if( tmpDate.getDate() == holidays[j][0] && tmpDate.getMonth() == holidays[j][1] )
            bool = false;
    }
    if(tmpDate.getDay() != 0 && tmpDate.getDay() != 6 && bool)
        days++;
}
console.log(days);

关于javascript - 计算日期之间的特定工作日并排除 Javascript 中的假期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413960/

相关文章:

javascript - 无法获得前几分钟的正确值

ReactJS Datepicker - 我希望日期选择器从本月开始并且仅

javascript - js判断一个字符串是否为有效日期

javascript - Moment.js 无法正确计算两个日期之间的周数

javascript - 打开弹出窗口时在 Javascript 中使用媒体查询

javascript - 使用 javascript 数组填充下拉选择框

javascript - 如何随机化 Polymer 中 div 的显示顺序

javascript - 如何在 Moment.js 中设置日期格式

javascript - 如何在 ng-repeat 创建的每个元素后添加空格

javascript - JQueryUI 窗口未覆盖所有内容元素