小智 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)
小智 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 错误警告不显示通知,请删除。