2013-10-27 62 views
1
$from_time = date('Y-m-d H:i:s'); 
$to_time = $row['clock']; 

echo $from_time - $to_time; 

$ to_time是MySQL数据库中的时间戳记。 $ row ['clock'] = 2013-10-27 13:28:01。PHP - 两个日期之间的差异,返回0

当我运行这段代码,回声总是返回0

我想获得的日期之间的秒数。

回答

6

你基本上试图减去两个字符串。如果您回显$from_time,则可以发现该值将类似于2013-10-27 12:49:270,并且$to_time将是另一个字符串 - 2013-10-27 13:28:01

你需要将它们转换成时间戳做减法前:

$from_time = time(); 
$to_time = strtotime($row['clock']); 

我建议使用DateTime类使用日期和时间的工作。

这是您使用DateTime类是如何找到两个日期之间的差值:

$from_time = new DateTime('now'); 
$to_time = new DateTime("2013-10-27 13:28:01"); 
$interval = $from_time->diff($to_time); 
echo $interval->format('%h hours %i minutes %S seconds'); 

输出:

0 hours 31 minutes 48 seconds 
+0

谢谢!这工作。 – user2924019

0

strtotime会将日期转换为UNIX时间戳,
这是在几秒钟内,并将使您能够进行计算。
http://php.net/manual/de/function.strtotime.php

$from_time = time(); 
$to_time = strtotime($row['clock']); 

echo $from_time - $to_time; 
+2

你不需要做'strtotime(date('Ymd H:i:s'))' - 只需'time()'就足够了。 –

+0

谢谢!这工作。 – user2924019

1

首先使用strtotime()转换$to_timetimestamp,然后减去,只有这样,你会得到正确的结果