我正在使用此代码来计算时间段。实际上,我想要两个HH:MM:SS时刻之间的时期,并具有HH:MM:SS格式的结果。
$time1 = strtotime('00:00:00');
$time2 = strtotime('00:00:07');
$diff = $time2 - $time1;
$diff = date('H:i:s', $diff);
我期待00:00:07
,但我会得到01:00:07
。有什么问题?
欧文在这里运行,得到正确的答案,但是我在本地机器上运行了相同的代码,并且错误!是时区还是某种配置效果结果?!
请停止使用strtotime
和date
功能。使用DateTime
类。
,如果您可以更好地搜索,那么找到两个日期的差异已经结束了。例如,我在这里的答案。略微改变它看起来像:
$create_time = "00:00:00";
$current_time="00:00:07";
$dtCurrent = DateTime::createFromFormat('H:i:s', $current_time);
$dtCreate = DateTime::createFromFormat('H:i:s', $create_time);
$diff = $dtCurrent->diff($dtCreate);
echo $diff->format("%H:%I:%S"); // to get HH:MM:SS format
这返回00:00:07
有关更多格式的详细信息,请参见DateInterval::format
。
是因为当您从时间2减去时间1时,您最终会得到7;
日期函数需要时间戳,7不是时间戳。
您可以使用http://php.net/manual/en/datetime.diff.php来计算差异?
您应该考虑取消INI设置中的时区衍射的Unix时期。是1月1日。您可以通过添加e
,O
或P
检查服务器/应用程序的设置。检查此代码:
$time1 = strtotime('00:00:00 +0000');
$time2 = strtotime('00:00:07 +0000');
$epoch = strtotime('01 Jan 1970');
$diff = $time2 - $time1;
var_dump($time1,$time2,$epoch,$diff);
$diff = date('H:i:s', $epoch+$diff);
echo $diff;