如何获取从现在到MySQL数据库中给定的日期时间的天数、小时数、分钟数和秒数


How can I get number of days, hours, minutes and second from now to a date-time given in the MySQL database?

在我的MySQL表中,我有一个datatime列(时间以以下格式2011-02-15 11:01:14保存(。我使用PHP提取这些信息,并将其打印到用户页面。

$results = mysql_query($cmd,$link);
while ($res_array = mysql_fetch_array($results)) {
   $submitted_at = $res_array['datetime'];
   print $submitted_at."<br>";
}

然而,我不仅想展示给定的数据时间,还想展示它是多久以前的。更详细地说,我需要这样的东西:(67 day 4 hours 47 minutes 7 seconds ago(。PHP有一些功能可以让它变得更容易吗。我特别担心的是,这个月可能有28天、29天、30天和31天。

作为一种替代方案,我考虑在MySQL级别上做这件事。提取给定时间到当前数据的秒数应该很容易。然后我可以很容易地将秒转换为天、小时和分钟。但我不知道如何使用mysql_fetch_array访问这些信息。它应该是类似$res_array['unix_timestamp(now())-unix_timestamp(datatime)']的东西吗?

这将是您想要的,只需更改格式以满足您的需求。

http://php.net/manual/en/datetime.diff.php

例如:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

更改此行:

$interval->格式("%R%a天"(

以下指南如下:

http://php.net/manual/en/function.date.php

编辑:这个函数是PHP 5.3+

第2版:为旧版本的PHP找到了这个如何使用PHP计算两个日期之间的差异?