从SQL / PHP时间戳打印出相对日期/时间

时间:2012-02-20 21:22:30

标签: php mysql

我有这样的SQL Datestamp:2012-02-20 21:14:54

如何在PHP中打印相对日期和时间?

e.g。

Occured:几秒钟前 发生在:4分钟前 发生在:4小时前 发布日期:2012年1月8日星期一

几小时后,我只想打印出实际日期

3 个答案:

答案 0 :(得分:2)

在Google http://www.mdj.us/web-development/php-programming/another-variation-on-the-time-ago-php-function-use-mysqls-datetime-field-type

两秒后发现此消息

一般情况下,您选择一个时间单位,如秒,测试时差是否小于此单位的最大值(60s),如果是,则打印出“$ timeDifference $ unit”。如果不是,则将差值除以单位max-value,然后从下一个更高的单位(分钟)开始。

示例:

$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";

// ...

答案 1 :(得分:1)

这是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

答案 2 :(得分:0)

这不是很难编码。而且很有趣。 Here a sample,只需动手就可以了 开始将SQL Datestamp转换为unixtime,如下所示:

$unixtime = strtotime('2012-02-20 21:14:54');