php DateTime计算,如何计算DateTime和#x27之间的时间;这取决于工作时间

php DateTime计算,如何计算DateTime和#x27之间的时间;这取决于工作时间,php,datetime,Php,Datetime,我想计算几次。我需要知道从一个电话输入到现在的工作时间之间有多少工作时间 例如: 昨天15:00打电话 工作时间结束:18:00 工作时间开始:08:00 现在:10:00 因此,我需要知道我的电话在工作时间内的年龄: 呼叫存储>>工作时间结束:3小时 工作时间开始>>现在:2小时 年龄:5小时 我想使用phpDateTime 您将如何进行?我认为这可以帮助您: //workdays till 18:00 and start 08:00 function calculateWorkHours

我想计算几次。我需要知道从一个电话输入到现在的工作时间之间有多少工作时间

例如: 昨天15:00打电话 工作时间结束:18:00 工作时间开始:08:00 现在:10:00

因此,我需要知道我的电话在工作时间内的年龄:

  • 呼叫存储>>工作时间结束:3小时
  • 工作时间开始>>现在:2小时
  • 年龄:5小时
我想使用phpDateTime


您将如何进行?

我认为这可以帮助您:

//workdays till 18:00 and start 08:00
function calculateWorkHours(DateTime $Start, DateTime $End) {
    //validate given parameters
    if ($Start > $End) throw new Exception('$Start date cannot be later than $End date');

    $hours = 0;

    do {
        //get the current hour
        $currentHour = $Start->format('H');

        //while the $currenthour is lower then 18 and higher than 7
        if($currentHour < 18 && $currentHour >= 8) {
            $hours++;
        }

        $Start->modify('+1 hour');

    } while($End > $Start);

    return $hours;
}

$Start = new DateTime('yesterday 150000');
$End = new DateTime('100000');
echo calculateWorkHours($Start, $End); //returns 5

$Start = new DateTime('yesterday 060000');
$End = new DateTime('120000');
echo calculateWorkHours($Start, $End); //returns 14

$Start = new DateTime('-2 days 150000');
$End = new DateTime('100000');
echo calculateWorkHours($Start, $End); //return 15
//工作日至18:00,08:00开始
函数calculateWorkHours(DateTime$开始,DateTime$结束){
//验证给定参数
如果($Start>$End)抛出新异常(“$Start date不能晚于$End date”);
$hours=0;
做{
//获取当前时间
$currentHour=$Start->format('H');
//而$currenthour低于18,高于7
如果($currentHour<18&$currentHour>=8){
$hours++;
}
$Start->modify(“+1小时”);
}while($End>$Start);
返回$hours;
}
$Start=新日期时间(“昨天150000”);
$End=新日期时间('100000');
echo calculateWorkHours($Start,$End)//返回5
$Start=新的日期时间(“昨天060000”);
$End=新日期时间('120000');
echo calculateWorkHours($Start,$End)//返回14
$Start=新日期时间('-2天150000');
$End=新日期时间('100000');
echo calculateWorkHours($Start,$End)//返回15

所以你假设通话中的人会在1800点挂断电话,因为这是工作时间结束?你可以使用。很酷,Glavić的方法可以做到这一点。