【发布时间】:2019-10-03 21:12:56
【问题描述】:
正在开发一个小型应用程序,该应用程序在两个设定的日期范围内不包括周末和公共假期。即,如果用户输入 2019-05-01 和 2019-05-10,它将返回不包括周末的范围,如果有任何公共假期,则从结果中排除这些范围。
我从两个变量中得到日期范围和每天的时间,工作时间
$duration = $endTime - $startTime;
我如何使用 in_array 来 当我打印 2019-05-01 和 2019-05-09 之间的日期时返回的结果
//date range
Array
(
[2019-05-01] => 09:30:00
[2019-05-02] => 09:30:00
[2019-05-03] => 09:30:00
[2019-05-06] => 09:30:00
[2019-05-07] => 09:30:00
[2019-05-08] => 09:30:00
[2019-05-09] => 09:30:00
)
// public holiadys
Array
(
[0] => 2019-05-08
[1] => 2019-05-09
)
$start = new DateTime('2019-05-01');
$end = new DateTime('2019-05-31');
// getting the day interval https://php.net/manual/en/class.dateinterval.php
$day = new DateInterval("P1D");
//holidays hardcoded for testing, must create database abd select dates from there
$holidays = array('2016-01-01','2016-03-25');
$days = array();
//hours set to 8 hours a daye
$startTime = new DateTime('08:00:00');
$endTime = new DateTime('17:30:00');
$duration = $startTime->diff($endTime);
$data = $endTime - $startTime;
foreach(new DatePeriod($start, $day, $end->add($day)) as $day => $k) {
$day_num = $k->format("N");
$w = $day_num;
if($w < 6) { //if its wmore than 5 its weekend
$days[$k->format("Y-m-d")] = $duration->format("%H:%I:%S");
}
}
foreach ($holidays as $value) {
$value = $value;
}
print_r($days);
print_r($holidays);
需要计算这些日期之间的总时间,不包括周末和公共假期
【问题讨论】:
-
一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是它可以帮助您调试代码
-
注意,感谢编辑