我拼凑了一个函数,它将使用PHP找到两个小时之间的差异。但是,我遇到的问题是,如果总差异小于24小时,它会增加额外的小时数。
例如,如果我想查找2017-12-23 00:30:00
和2017-12-26 12:00:00
之间的小时差异。它将返回36小时的结果。我认为这是因为我在每个人中使用$days = 0;
。
删除它可以解决问题,但是当范围大于24小时时会产生相反的效果。我错过了什么?当小时数小于24时,我应该创建一个if语句来将$days
设置为-1吗?我在公交车上走很远的路吗?
<?php
function number_of_working_hours($from, $to) {
$workingDays = [1, 2, 3, 4, 5]; # date format = N (1 = Monday, ...)
$holidayDays = ['*-12-25', '*-01-01']; # variable and fixed holidays
$from = new DateTime($from);
$to = new DateTime($to);
$to->modify('+1 day');
$interval = new DateInterval('PT1H');
$periods = new DatePeriod($from, $interval, $to);
$days = 0;
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
if (in_array($period->format('Y-m-d'), $holidayDays)) continue;
if (in_array($period->format('*-m-d'), $holidayDays)) continue;
$days++;
}
return $days;
}
echo number_of_working_hours('2017-12-23 00:30:00', '2017-12-26 12:00:00');
?>
答案 0 :(得分:1)
如果您删除canvas.setActiveGroup(this.shapeGroup.setCoords());
var objs = canvas.getActiveGroup().getObjects();
for(i in objs){
objs[i].set({
...
});
}
行似乎有效,我认为没有理由在那里。
$to->modify('+1 day');