2017-07-25 80 views
0

我想设置一个计时器并计算完成任务需要多长时间。以分钟为单位计算时间差(PHP)

所以我下面的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,我如何设置它,以便我可以简单计算结束日期 - 以分钟为单位的开始日期。

非常感谢您的帮助。

+0

我只是睡眠测试你的代码(5),我有5个作为结果。你只有这个代码? –

+1

您正在使用'date'来创建时间字符串,然后使用'strtotime()'将其转换回整数。你可以省去一些麻烦:'$ firstDate = time(); sleep(80); $ secondDate = time(); $ diff = $ secondDate- $ firstDate;' –

+1

虽然没有解释-40的结果,奇怪我得到了20,当它应该是80. – WheatBeak

回答

0

问题是你给错误的日期格式的时间。这应该是h:i:sh: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"; 

然后输出将是:​​

0

的问题是,你有你的时间格式字符串错误:

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

第二m,这应该是i为“分钟”,实际上是“月”了,所以这是07

这将解决这个问题:

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

值得一提的是,如果你使用这种格式,你应该在末尾加上a来指定ampm,或者使用H代替h 24小时格式。

这可能会导致问题。比如我在哪里,现在是下午3点17分,所以,当我这样做:

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

我的输出是:

1501010231 
1500967031 

但使用date('Y-m-d h:i:s a')date('Y-m-d H:i:s')会给双方的预期结果值是相同的。

0

$ firstDate =新\ DATETIME();

sleep(80);

$ secondDate = new \ DateTime();

$ interval = $ firstDate-> diff($ secondDate);

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

结果:差异日期为:80

相关问题