获取给定月份的工作日数

Hac*_*ker 6 php calendar days weekday weekend

我想计算给定月份和年份的工作日天数.工作日意味着星期一至星期五.我该怎么做 ?

小智 23

您不需要计算每月的每一天.你已经知道前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)

  • 我喜欢这个解决方案,因为它只是做了所需要的逻辑分析.高效编程的真正本质. (3认同)

小智 2

一些基本代码:

$month = 12;
$weekdays = array();
$d = 1;

do {
    $mk = mktime(0, 0, 0, $month, $d, date("Y"));
    @$weekdays[date("w", $mk)]++;
    $d++;
} while (date("m", $mk) == $month);

print_r($weekdays);
Run Code Online (Sandbox Code Playgroud)

@如果您的 PHP 错误警告不显示通知,请删除。

  • -1,因为我只是讨厌使用“@”进行错误抑制,并且此代码无法正常工作,它总是在下个月返回一个额外的日期。 (3认同)