我为慈善比赛创建了一个计时系统。我试图使用 PHP 找到开始时间和完成时间之间的差异。我不确定我是否正确记录了时间,但这是我刚刚记录的开始时间......
20180808180653
这是一个完成时间...
20180808180654
它们之间的差异大约是 1 小时 24,但是当我使用时......
date('h:i:s', $finshTime-$startTime)
我得到的是 03:24:20 而不是 01:34:20。
有人可以帮忙吗?
date 方法接受为"整数 Unix 时间戳"。您提供的是秒数(示例中1
(。
$start = '20180808180653';
$end = '20180808180654';
$diff = $end - $start;
var_dump($diff); //1
$d = date('h:i:s', $$diff);
var_dump($d); //04:00:01
//the above is wrong. You need to try something like the code below
$dStart = new DateTime($start);
$dEnd = new DateTime($end);
$interval = $dStart->diff($dEnd);
var_dump($interval->format('%h:%i:%s'));
我会怀疑使用看起来像这样的日期时间的字符串表示形式。将整个事情转换为有意义的日期格式,如yyyy-mm-dd hh:mm:ss
,或有效的 unix 时间戳。
您的第一种方法并不遥远,您只需要使用strtotime
函数即可。我保证您可以首先为您正在使用的字符串制作准确的日期或 Unix 时间表示。休息应该到位。
首先检查$finshTime和$startTime的类型是否为整数。
您可以使用 get 变量类型:
gettype($startTime);
如果是这种情况,请尝试使用((:
$diff_date = date('h:i:s', ($finshTime - $startTime) );
如果$startTime和$finshTime是字符串,请尝试以下操作:
$diff_date = date('h:i:s', (strtotime($finshTime) - strtotime($startTime)) );