Php 仅当小时数介于两小时之间时计算小时数

Php 仅当小时数介于两小时之间时计算小时数,php,Php,我需要计算两个小时之间的小时数: 例如,我有一个从18:00到02:00的时间表;我需要知道其中有多少小时是在22:00到06:00之间 在这种情况下,需要4小时 如何在PHP中实现这一点 我不需要知道22点到06点的时差 我需要知道的是从22小时到02小时的差异。因为这个时间段在指定的参数范围内 我澄清,我还需要知道会议记录 这是我的代码,但它似乎非常复杂,并不总是有效 $he = new datetime('2020-01-01 '.$horaInicio);

我需要计算两个小时之间的小时数:

例如,我有一个从18:00到02:00的时间表;我需要知道其中有多少小时是在22:00到06:00之间

在这种情况下,需要4小时

如何在PHP中实现这一点

  • 我不需要知道22点到06点的时差
我需要知道的是从22小时到02小时的差异。因为这个时间段在指定的参数范围内

  • 我澄清,我还需要知道会议记录
这是我的代码,但它似乎非常复杂,并不总是有效

            $he = new datetime('2020-01-01 '.$horaInicio);
        $hs = new datetime($dateFinal.' '.$horaFinal);

        $inicio_noche = new datetime($he->format('y-m-d').' 22:00:00');
        $fin_noche = new datetime($hs->format('y-m-d').' 06:00:00');
        $medianoche = new datetime($hs->format('y-m-d').' 00:00:00');

        if ($he->format('d') == $hs->format('d')) {
            if ($he->format('H:i:s') >= $medianoche->format('H:i:s') && $hs->format('H:i:s') <= $fin_noche->format('H:i:s')) {
                $diff = $he->diff($hs);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
            if ($he->format('H:i:s') < $fin_noche->format('H:i:s') && $hs->format('H:i:s') > $fin_noche->format('H:i:s')) {
                $diff = $he->diff($fin_noche);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
            if ($he->format('H:i:s') > $fin_noche->format('H:i:s') && $hs->format('H:i:s') > $fin_noche->format('H:i:s')) {
                $diff = $he->diff($fin_noche);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
        } else {
            if ($he->format('H:i:s') >= $inicio_noche->format('H:i:s') && $hs->format('H:i:s') <= $fin_noche->format('H:i:s')) {
                $diff = $he->diff($hs);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
            if ($he->format('H:i:s') < $inicio_noche->format('H:i:s') && $hs->format('H:i:s') <= $fin_noche->format('H:i:s')) {
                $diff = $inicio_noche->diff($hs);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
            if ($he->format('H:i:s') < $inicio_noche->format('H:i:s') && $hs->format('H:i:s') > $fin_noche->format('H:i:s')) {
                $diff = $inicio_noche->diff($fin_noche);
                $horas['nocturnas'] = new datetime('2020-01-01 '.$diff->format('%H:%i:%s'));
            }
        }
$he=新日期时间('2020-01-01'.$horaInicio);
$hs=新日期时间($dateFinal.'.$horaFinal);
$inicio_noche=新日期时间($he->格式('y-m-d')。'22:00:00');
$fin_noche=新日期时间($hs->格式('y-m-d')。'06:00:00');
$medianoche=新日期时间($hs->格式('y-m-d')。'00:00:00');
如果($he->format('d')=$hs->format('d')){
如果($he->format('H:i:s')>=$medianoche->format('H:i:s')&&&$hs->format('H:i:s')格式('H:i:s')){
$diff=$he->diff($hs);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
如果($he->format('H:i:s')<$fin\u noche->format('H:i:s')&&&$hs->format('H:i:s')>$fin\u noche->format('H:i:s')){
$diff=$he->diff($fin_noche);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
如果($he->format('H:i:s')>$fin\u noche->format('H:i:s')&&&$hs->format('H:i:s')>$fin\u noche->format('H:i:s')){
$diff=$he->diff($fin_noche);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
}否则{
如果($he->format('H:i:s')>=$inicio_noche->format('H:i:s')&&$hs->format('H:i:s')格式('H:i:s')){
$diff=$he->diff($hs);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
if($he->format('H:i:s')<$inicio_noche->format('H:i:s')&&$hs->format('H:i:s')格式('H:i:s')){
$diff=$inicio_noche->diff($hs);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
如果($he->format('H:i:s')<$inicio\U noche->format('H:i:s')&&$hs->format('H:i:s')>$fin\U noche->format('H:i:s')){
$diff=$inicio_noche->diff($fin_noche);
$horas['noctonas']=新日期时间('2020-01-01'.$diff->格式('%H:%i:%s');
}
}
您应该试试

产出:1

通过以上内容,您可以更改所需的格式

%y years
%m months
%d days
%h hours
%i minutes
%s seconds
编辑:这没有添加值。因此,您需要手动将其设置为如下所示:

$time1 = '2020-10-22 22:00:00';
$time2 = '2020-10-24 06:00:00';
$diff = date_diff(date_create($time1),date_create($time2));
$diff_ho = $diff->format('%y')*(24*365)+$diff->format('%m')*(24*30)+$diff->format('%d')*24+$diff->format('%h');
你应该试试

产出:1

通过以上内容,您可以更改所需的格式

%y years
%m months
%d days
%h hours
%i minutes
%s seconds
编辑:这没有添加值。因此,您需要手动将其设置为如下所示:

$time1 = '2020-10-22 22:00:00';
$time2 = '2020-10-24 06:00:00';
$diff = date_diff(date_create($time1),date_create($time2));
$diff_ho = $diff->format('%y')*(24*365)+$diff->format('%m')*(24*30)+$diff->format('%d')*24+$diff->format('%h');

显示您尝试的代码!我没有这部分的代码。我真的不知道如何开始DateTime课程。这能回答你的问题吗?显示您尝试的代码!我没有这部分的代码。我真的不知道如何开始DateTime课程。这能回答你的问题吗?谢谢,但这段代码只返回晚上10点和早上6点之间的差异我需要知道两个小时之间的总小时数,只有在22:00到06:00之间谢谢,但这段代码只返回晚上10点和早上6点之间的差异我需要知道两个小时之间的总小时数,仅当它们在22:00到06:00之间时,我需要知道两个小时之间的总小时数,仅当它们在22:00到06:00之间时,如果您将输出设置为0,您可以检查此项:我需要知道两个小时之间的总小时数,仅当它们在22:00到06:00之间时,如果您将输出设置为0,则可以检查此项: