计算一个月的工作日数

Vis*_*a S 9 php datetime date

可能重复:
获取给定月份的工作日数

如何计算任何月份的工作日?cal_days_in_month只返回一个月中的总天数.我的任务是计算除星期六,星期日或星期日外的每月天数.找到这个的任何方法?

Ama*_*mar 13

复制第二个答案:获取给定月份的工作日数

您不需要计算每月的每一天.你已经知道前28天包含20个工作日,无论如何.您所要做的就是确定最近几天.将起始值更改为29.然后将20个工作日添加到返回值.

function get_weekdays($m,$y) {
$lastday = date("t",mktime(0,0,0,$m,1,$y));
$weekdays=0;
for($d=29;$d<=$lastday;$d++) {
    $wd = date("w",mktime(0,0,0,$m,$d,$y));
    if($wd > 0 && $wd < 6) $weekdays++;
    }
return $weekdays+20;
}
Run Code Online (Sandbox Code Playgroud)

这应该解决您的问题,确实是一个有效的解决方案.


Sal*_*n A 13

function countDays($year, $month, $ignore) {
    $count = 0;
    $counter = mktime(0, 0, 0, $month, 1, $year);
    while (date("n", $counter) == $month) {
        if (in_array(date("w", $counter), $ignore) == false) {
            $count++;
        }
        $counter = strtotime("+1 day", $counter);
    }
    return $count;
}
echo countDays(2013, 1, array(0, 6)); // 23
Run Code Online (Sandbox Code Playgroud)

date示例中使用了该函数.关于忽略参数的注意事项:0是星期日,...,6是星期六.