您好我正在尝试生成计算每个月的所有日子然后减去周末的数组,之后我想每天增加8小时,所以1 = 8,2 = 16等。到目前为止我已经能够生成特定月份的所有日子的数组。试图减去周末,每天增加8小时但到目前为止没有运气。
这是我的代码:
<?php
$list=array();
$month = 1;
$year = 2017;
for($d=1; $d<=31; $d++)
{
$time=mktime(12, 0, 0, $month, $d, $year);
if (date('m', $time)==$month && ((date('D', $time) != 'Sat' || (date('D', $time) != 'Sun'))))
$list[]=date('d', $time);
}
echo "<pre>";
print_r($list);
echo "</pre>";
?>
所以最终的结果应该是这样的:
Array
(
[0][0] => 01
[0][1] => 8
[1][0] => 02
[1][1] => 16
...
)
基本上,目标是计算每个工作日一个月应包含多少小时。获得此信息后,可以将其与今天的日期进行比较,看看本月是否完成了工作时间。
非常欢迎任何帮助。
答案 0 :(得分:1)
您可以通过DateTime
跟踪日期来实现您的目标之一:
$year = 2017;
$month = 1;
$date = (new Datetime())->setDate($year, $month, 1);
$days = [];
$hours = 0;
foreach (range(1, $date->format('t')) as $i) {
$hours += $date->format('N') < 6 ? 8 : 0;
$days[] = [
'date' => $date->format('d'),
'hours' => $hours,
];
$date->modify('+1 day');
}
这是正在发生的事情:
DateTime
设置为月初。for($i=1;$i<=$date->format('t');$i++)
的另一种方式。 t
只会告诉你这个月的日子。$date->format('N') < 6
检查星期几是否在星期六之前。如果是这样,将$hours
计数增加8。希望这有帮助!