PHP-两次之间的差异

时间:2018-08-08 20:39:05

标签: php time

我为慈善竞赛创建了计时系统。我正在尝试使用PHP查找开始时间和完成时间之间的差异。我不确定我是否正确记录了时间,但这是我刚刚记录的开始时间...

20180808180653

这是一个整理时间...

20180808180654

它们之间的区别大约是1小时24,但是当我使用...

date('h:i:s', $finshTime-$startTime)

我得到的是03:24:20而不是01:34:20。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

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函数即可。我保证您首先可以对所使用的字符串进行准确的Date或Unix时间表示。休息应该就位。

答案 1 :(得分:0)

首先检查$ 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)) );