显示类似博客的日期和时间

时间:2010-02-09 13:06:42

标签: php

我有一个博客。我经常发布一些有趣的东西。我维护响应时间的时间戳。如何显示以下时间?

  • 2010-02-09 1小时前,如果答复只有1小时

  • 2010-02-09 20小时前,如果回复只有20个小时

  • 昨天2010-02-08,如果回复只有1天

  • 2010-02-04 17:20,如果回复是前几天

我将数据库中的时间戳维护为Unix time。例如,我的时间戳是1265709142。

如何用PHP实现?

4 个答案:

答案 0 :(得分:3)

$d = time() - $timestamp;
if ($d < 60)
    return $d." second".(($d==1)?'':'s')." ago";
else
{
    $d = floor($d / 60);
    if($d < 60)
        return $d." minute".(($d==1)?'':'s')." ago";
    else
    {
        $d = floor($d / 60);
        if($d < 24)
            return $d." hour".(($d==1)?'':'s')." ago";
        else
        {
            $d = floor($d / 24);
            if($d < 7)
                return $d." day".(($d==1)?'':'s')." ago";
            else
            {
                $d = floor($d / 7);
                if($d < 4)
                    return $d." week".(($d==1)?'':'s')." ago";
            }//Week
        }//Day
    }//Hour
}//Minute

答案 1 :(得分:2)

我确信有基于PHP的方法,我很想看到一些,但也有一个名为Pretty Date的基于jQuery的插件。我认为Stack Overflow使用它。

当然,这取决于在用户浏览器中激活的JavaScript,但在JavaScript关闭时会优雅地降级。此外,在搜索引擎中,真实日期是索引而不是格式化日期 - 一个小但很好的加号。

答案 2 :(得分:1)

有一个JavaScript库:http://tpgblog.com/cutetime/。 只需以特定格式打印日期,然后将JavaScript库添加到您的页面即可。完成。

答案 3 :(得分:1)

最好的方法是根据ISO格式化时间,例如2008-07-17T09:24:17Z

<?php 
  $DateOfRequest = date("Y-m-dTH:i:s", $timestamp); 
?> 

然后,使用http://timeago.yarp.com/注入格式字符串,例如“2小时前”左右。