如何使用Javascript查找当月的工作日?

如何使用Javascript查找当月的工作日?,javascript,Javascript,如何创建查找当月工作日数的函数?你能在没有Jquery的情况下用简单的javascript编写代码吗 function daysInMonth(iMonth, iYear) { return 32 - new Date(iYear, iMonth, 32).getDate(); } function Detail() { var d = new Date(); var year = d.getFullYear(); var mon

如何创建查找当月工作日数的函数?你能在没有Jquery的情况下用简单的javascript编写代码吗

    function daysInMonth(iMonth, iYear)
    {
    return 32 - new Date(iYear, iMonth, 32).getDate();
    }

    function Detail() {
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth();
    var dim = daysInMonth(month, year);
    alert(dim);
    }
    function Businessday(iMonth, iYear)
    {
   //   enter code here
    } 
    function isBusinessDay(){
    var d=new Date();
    var day = d.getDay();
    switch(day) {
        case 0:
            document.write("Today is Weekend");
        break;
        case 6:
        document.write("Today is Weekend");
            break;
            default:
            document.write("Today is business day");
        }
           }

提前谢谢

好的,让我们一次解决一个问题

JavaScript中的对象有一个方法
getDay
。星期天返回0,星期一返回1,星期二返回2。。。周六六点。考虑到这一点,我们可以得出结论,我们不想计算那些返回0或6的天数

您已经有了一个函数来返回一个月的天数,因此假设我们可以循环所有天数并检查getDay的结果
daysInMonth
假设月份为零;所以0=一月

我鼓励你从这里开始尝试自己解决这个问题;否则请继续阅读


让我们从一个
isWeekday
函数开始。我们需要年、月、日:

function isWeekday(year, month, day) {
var day = new Date(year, month, day).getDay();
return day !=0 && day !=6;
}
我们完全按照上面所说的做:我们构造一个日期,并使用
getDay
确定它是否是一天

现在我们需要循环一个月中的所有日子:

function getWeekdaysInMonth(month, year) {
var days = daysInMonth(month, year);
var weekdays = 0;
for(var i=0; i< days; i++) {
    if (isWeekday(year, month, i+1)) weekdays++;
}
return weekdays;
}

这将产生21。

带链接的箭头函数样式:

(
    (year, month) => 
        new Array(32 - new Date(year, month, 32).getDate())
        .fill(1)
        .filter(
            (id, index) =>
                [0, 6].indexOf(
                    new Date(year, month, index + 1).getDay()) === -1
                ).length
)(2017, 5)

你能澄清一下工作日和工作日(周一至周五)之间的区别吗?周一至周五是工作日。
(
    (year, month) => 
        new Array(32 - new Date(year, month, 32).getDate())
        .fill(1)
        .filter(
            (id, index) =>
                [0, 6].indexOf(
                    new Date(year, month, index + 1).getDay()) === -1
                ).length
)(2017, 5)