以分钟为单位计算时差(PHP)

时间:2017-07-25 18:50:45

标签: php date timer

我想设置一个计时器并计算完成任务所需的时间。

所以我设置了以下PHP代码来测试:

$firstDate = date('Y-m-d h:m:s');
sleep(80);
$secondDate = date('Y-m-d h:m:s');
$diffDates = (strtotime($secondDate) - strtotime($firstDate));

echo "Difference in dates is:" . $diffDates . "\n";

当我运行它虽然它给我以下输出:

    Difference in dates is:-40

我想知道的是,为什么它会给我-40,如何设置它以便我可以简单地计算结束日期 - 以分钟为单位的开始日期。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

问题是您的时间格式字符串错误:

$firstDate = date('Y-m-d h:m:s');

第二个m,对于'分钟'来说应该是i,实际上又是'月',所以它是07

这将解决它:

date('Y-m-d h:i:s')

还值得注意的是,如果您使用此格式,则应在末尾添加a以指定ampm,或使用H代替{{ 1}} 24小时格式。

这可能会导致问题。例如,我现在正是下午3:17,所以当我这样做时:

h

我的输出是:

echo time();
echo "<br>";
echo strtotime(date('Y-m-d h:i:s'));

但使用1501010231 1500967031 date('Y-m-d h:i:s a')会使两个值的预期结果相同。

答案 1 :(得分:0)

问题是你给出了错误的日期格式。哪个应该是h:i:s而不是h:m:s

所以你的日期将是:date('Y-m-d h:i:s')

$firstDate = date('Y-m-d h:i:s');
sleep(80);
$secondDate = date('Y-m-d h:i:s');
$diffDates = (strtotime($secondDate) - strtotime($firstDate));

echo "Difference in dates is:" . $diffDates . "\n";

然后输出为:Difference in dates is:80

答案 2 :(得分:0)

$ firstDate = new \ DateTime();

睡眠(80);

$ secondDate = new \ DateTime();

$ interval = $ firstDate-&gt; diff($ secondDate);

回声“日期的差异是:”。 $ interval-&gt; s。 “\ n” 个;

  
    

结果:日期差异为:80