来自MySQL时间戳的“Time ago”

时间:2012-02-09 20:11:29

标签: php jquery mysql timeago

我正在尝试创建一个结果表,包括数据库中每个条目的时间戳。但是,我需要时间显示为“X秒/分钟/小时前”

我已经尝试了jQuery timeago plugin并没有成功,我现在想知道如何为每个条目执行此操作。

$result = mysql_query("SELECT * from realmfeed order by ID asc");

echo "<table class='display'>\n";

while($row = mysql_fetch_array($result))
{
    echo "<tr><td><b>".$row['ID']."</b></td>\n";
    echo "<td>".$row['eventType']."</td>\n";
    echo "<td>".$row['server']."</td>\n";
    echo "<td>".$row['realm']."</td>\n";
    echo "<td>".$row['name']."</td>\n";
    echo "<td>".$row['time']."</td>\n</tr>\n\n";
}


echo "</table>\n";

如何为每个结果创建“超时”功能?

4 个答案:

答案 0 :(得分:4)

$time = strtotime($row['time']);
$dbDate = new DateTime($time);
$currDate = new DateTime();
$interval = $currDate->diff($dbDate);
echo $interval->d." days ".$interval->h." hours";

请参阅DateInterval了解可用的功能和字段

答案 1 :(得分:1)

我会从MYSQL获取时间戳,然后在php中进行数学运算,例如。

$result = mysql_query("SELECT ..., UNIX_TIMESTAMP(time) as time FROM realfeed ORDER BY ID ASC");


$row = mysql_fetch_array($result);
$then = $row['time'];
$now = time();

$diff = $now - $then; //Now you have the difference in seconds

这里有一个很好的功能,你可以使用差异,虽然我自己没有检查过.....

http://itwigle.com/twig/PHP_Time_Ago_Function

答案 2 :(得分:1)

使用PHP进行时差计算的问题是您假设MySQL和PHP服务器在相同的时区中。最好在SELECT中进行差异计算:

SELECT TIMEDIFF(NOW(), `time`) AS ago FROM realmfeed ORDER BY ID ASC

这将返回hh:mm:ss格式的时差。

或者,如果您只希望秒数:

SELECT TIME_TO_SEC(TIMEDIFF(NOW(), `time`)) AS secondsAgo FROM realmfeed ORDER BY ID ASC

答案 3 :(得分:-1)

试试这可能会有所帮助

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="jquery.timeago.js"></script>
</head>

<body>
<?php 
$result = mysql_query("SELECT * from realmfeed order by ID asc");

echo "<table class='display'>\n";

while($row = mysql_fetch_array($result))
{
    echo "<tr><td><b>".$row['ID']."</b></td>\n";
    echo "<td>".$row['eventType']."</td>\n";
    echo "<td>".$row['server']."</td>\n";
    echo "<td>".$row['realm']."</td>\n";
    echo "<td>".$row['name']."</td>\n";
    echo "<td><abbr class=\"timeago\" title=\"".date("j F Y h:i:s A",$row['time'])."\"></abbr></td>\n</tr>\n\n";
}


echo "</table>\n";
?>

    <script>
    jQuery(document).ready(function($){
     $("abbr.timeago").timeago()

    });
    </script>

</body>
</html>