Php 仅当小时数介于两小时之间时计算小时数
我需要计算两个小时之间的小时数: 例如,我有一个从18:00到02:00的时间表;我需要知道其中有多少小时是在22:00到06:00之间 在这种情况下,需要4小时 如何在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);
- 我不需要知道22点到06点的时差
- 我澄清,我还需要知道会议记录
$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,则可以检查此项: