从SQL / PHP日期戳输出相对日期/时间
我有这样的SQL Datestamp:2012-02-20 21:14:54
我如何在PHP中打印出相关的日期和时间?
例如
发生:几秒钟前发生:4分钟前发生:4小时前发生:2012年1月8日,星期一
几小时后我只想打印出实际的日期
Google两秒钟后发现此问题http://www.mdj.us/web-development/php-programming/another-variation-on-the-time-ago-php-function-use-mysqls-datetime-field-type
一般情况下,您选择的时间单位为秒,测试时差是否小于本机的最大值(60秒),如果是,则打印出“$ timeDifference $ unit”。 如果不是,则将差值除以单位最大值并从下一个更高单位(分钟)开始。
例:
$timeDif = 60*60*5 + 45; // == 5 hours 45 seconds
// 60 seconds in a minute
if ($timeDif < 60) // false
return "$timeDif second(s) ago";
// convert seconds to minutes
$timeDif = floor($timeDif / 60); // == 300 = 5 * 60
// 60 minutes in an hour
if ($timeDif < 60) // false
return "$timeDif minute(s) ago";
// convert minutes to hours
$timeDif = floor($timeDif / 60); // == 5
// 24 hours in a day
if ($timeDif < 24)
return "$timeDif hour(s) ago";
// ...
以下是MySQL解决方案的样子:
SELECT date_field, IF (DATEDIFF( NOW(), date_field) < 1, IF ( TIMEDIFF( NOW(), date_field ) < '01:00:00', CONCAT(MINUTE(TIMEDIFF(NOW(), date_field)), ' minutes'), CONCAT(HOUR(TIMEDIFF(NOW(), date_field )), ' hours')), date_field) AS occurred
FROM table
这不难编码。 而且做起来相当有趣。 这里有一个例子,只需要双手工作。
开始将SQL Datestamp转换为unixtime,如下所示:
$unixtime = strtotime('2012-02-20 21:14:54');
链接地址: http://www.djcxy.com/p/58963.html
上一篇: Print out Relative Date / Time from SQL / PHP Datestamp