无法在PHP中正确获取时差
输出4:55,应该是3:55无法在PHP中正确获取时差,php,Php,输出4:55,应该是3:55 这里怎么了?如果是01:00和02:00,它工作正常,但与上面的情况不同?使用floor而不是round。使用floor而不是round。或直接转换为整数 $time1 = "01:00"; $time2 = "04:55"; list($hours1, $minutes1) = explode(':', $time1); $startTimestamp = mktime($hours1, $minutes1); list($hours2, $minutes2)
这里怎么了?如果是01:00和02:00,它工作正常,但与上面的情况不同?使用
floor
而不是round
。使用floor
而不是round
。或直接转换为整数
$time1 = "01:00";
$time2 = "04:55";
list($hours1, $minutes1) = explode(':', $time1);
$startTimestamp = mktime($hours1, $minutes1);
list($hours2, $minutes2) = explode(':', $time2);
$endTimestamp = mktime($hours2, $minutes2);
$seconds = $endTimestamp - $startTimestamp;
$minutes = ($seconds / 60) % 60;
$hours = round($seconds / (60 * 60));
echo $hours.':'.$minutes;
exit;
或者直接转换为整数
$time1 = "01:00";
$time2 = "04:55";
list($hours1, $minutes1) = explode(':', $time1);
$startTimestamp = mktime($hours1, $minutes1);
list($hours2, $minutes2) = explode(':', $time2);
$endTimestamp = mktime($hours2, $minutes2);
$seconds = $endTimestamp - $startTimestamp;
$minutes = ($seconds / 60) % 60;
$hours = round($seconds / (60 * 60));
echo $hours.':'.$minutes;
exit;
当PHP可以为您进行计算时,计算量过多,同时也减少了出错的可能性
$hours = (int) ($seconds / (60 * 60));
输出
$time1 = Datetime::createFromFormat("h:i", "01:00");
$time2 = Datetime::createFromFormat("h:i", "04:55");
$diff = $time1->diff($time2);
var_dump($diff->format("%h %i"));
当PHP可以为您进行计算时,计算量过多,同时也减少了出错的可能性
$hours = (int) ($seconds / (60 * 60));
输出
$time1 = Datetime::createFromFormat("h:i", "01:00");
$time2 = Datetime::createFromFormat("h:i", "04:55");
$diff = $time1->diff($time2);
var_dump($diff->format("%h %i"));
您还可以使用
strotime
节省一些时间:
string '3:55' (length=4)
如上所述,使用floor
将产生您需要的结果:
结果
$time1 = strtotime("01:00");
$time2 = strtotime("04:55");
$seconds = $time2-$time1;
$minutes = ($seconds / 60) % 60;
$hours = floor($seconds / (60 * 60));
echo $hours.':'.$minutes;
3:55您还可以使用
strotime
节省一些时间:
string '3:55' (length=4)
如上所述,使用floor
将产生您需要的结果:
结果
$time1 = strtotime("01:00");
$time2 = strtotime("04:55");
$seconds = $time2-$time1;
$minutes = ($seconds / 60) % 60;
$hours = floor($seconds / (60 * 60));
echo $hours.':'.$minutes;
3:55我不知道,但是
DateTime
和DateInterval
类会解决你的头疼问题。@moonwave99不,试过了,24小时后小时会重置,这对我的程序不合适我不知道,但是DateTime
和DateInterval
类会解决你的头疼问题。@moonwave99不,试过了,小时数在24小时后重置,这对我的程序不合适