能有人帮我解决这个PHP时间戳谜题吗?
我想根据两个给定日期找出工作日的数量。
我得到一个字符串日期,例如开始日期:2019年10月1日,并将其拆分为数组 => $s
数组$s设置如下:
Array ( [0] => 01 [1] => 10 [2] => 2019 )
然后我从中生成了 Unix 时间戳:
date('U', mktime(0, 0, 0, $s[1], $s[0], $s[2]));
我得到了1569884400作为以上日期转换的结果。
然后我使用循环运行它,以便根据给定的两个日期找到工作日的数量。
这是循环的结果,可以看到由于某种原因10月27日重复出现。
只是为了澄清,这个PHP页面的顶部我设置了时区。
date_default_timezone_set('Europe/London');
以下是以下结果的代码
根据最后日期(在本例中为2019年10月31日,即31天),总计$total_days。
2019年10月应有23个工作日,由于我得到了两个27号,因此只有22个工作日。
我在这里做错了什么?
$wk_days = array(1, 2, 3, 4, 5);
$days = 0;
for ($i = 0; $i < $total_days; $i++) {
$tmp = $first + ($i * 86400);
echo $i." x86400 add to ". $first . " ==> " . $tmp. " and the new date is " .date('Y-m-d',$tmp) ."<br/>";
$chk = date('w', $tmp);
if (in_array($chk, $wk_days)) {
$days++;
}
}
0 x86400加上1569884400 ==> 1569884400 新日期是2019年10月1日
1 x86400加上1569884400 ==> 1569970800 新日期是2019年10月2日
2 x86400加上1569884400 ==> 1570057200 新日期是2019年10月3日
3 x86400加上1569884400 ==> 1570143600 新日期是2019年10月4日
4 x86400加上1569884400 ==> 1570230000 新日期是2019年10月5日
...
23 x86400加上1569884400 ==> 1571871600 新日期是2019年10月24日
24 x86400加上1569884400 ==> 1571958000 新日期是2019年10月25日
25 x86400加上1569884400 ==> 1572044400 新日期是2019年10月26日
26 x86400加上1569884400 ==> 1572130800 新日期是2019年10月27日 //***
27 x86400加上1569884400 ==> 1572217200 新日期是2019年10月27日 //***
28 x86400加上1569884400 ==> 1572303600 新日期是2019年10月28日
29 x86400加上1569884400 ==> 1572390000 新日期是2019年10月29日
30 x86400加上1569884400 ==> 1572476400 新日期是2019年10月30日
date('U', mktime(12, 0, 0, $s[1], $s[0], $s[2]));
。 - Pierre François