我所做的是:
echo date('H:i:s', abs(strtotime("10:50:00 - 08:50:00")));
我得到的是:
03:00:00
时区设置没有帮助。不同的服务器/机器的作用是相同的。10-8必须等于2而不是3,我知道简单的解是-3600。但我希望它能起作用而不去修补错误。
发布于 2014-12-22 10:28:32
使用DateTime对象和DateInterval
$d1 = new DateTime("10:50:00");
$d2 = new DateTime("08:50:00");
$diff = $d1->diff($d2);
echo $diff->format('%H:%I:%S');
发布于 2014-12-22 10:23:33
问题是,strtotime
不计算差异。它试图解析绝对日期。结果是false
。abs(false) === 0
。那你就只能和
date('H:i:s', 0);
如果您的时区设置为GMT-0300,则date()
尝试表示1970-01-01T03:00:00。
发布于 2014-12-22 10:22:58
strtotime
将时间转换为Unix时间戳,该时间戳基本上是1970年以来的秒数,这是一个整数。
因此,您可以转换这两次,并做一个简单的减法,然后转换回使用日期。
echo date('H:i:s', strtotime("10:50:00") - strtotime("08:50:00"));
https://stackoverflow.com/questions/27600651
复制相似问题