在yii中显示友好的时间格式

最近在写yii中文百科的程序时遇到了这个问题,本来我一直习惯的是 date("Y-m-d H:i",$time) 的方式。 不过现在很多的网站时间显示为 几分钟前几小时前几周前...为了追赶潮流我也写了个方法来实现它。

关于yii里面的格式

yii框架为我们提供了把一些字符串、时间戳等数据格式化为指定格式的类 CFormatter,我使用的方法就是继承了它,然后在配置文件里面修改一下配置就可以直接使用了。

Formatter 代码如下
[php]
class Formatter extends CFormatter{

    public function formatFriendlyDate($timestamp){
        $second = time()-$timestamp;
        switch (true){
            case $second < 3600:
                $m = round($second/60);
                if($m == 0 ){
                    return "刚刚";
                }
                return round($second/60).' 分钟前';
            case $second < 86400:
                return round($second/3600).' 小时前';
            case $second < (86400*7):
                return round($second/86400).' 天前';
            case $second < (86400*7*4):
                return round($second/(86400*7)).' 周前';
            default :
                return $this->formatDatetime($timestamp);
        }
    }
}
配置文件中
[php]
...
'components' => array(
        ...
        'format' => array(
            'class' => "Formatter",
        ),
        ...
),
...

怎么使用?

接下来就是在程序中来使用了,方法如下,

[php]
echo Yii::app()->format->formatFriendlyDate($timestamp);

如果你觉得这样使用比较麻烦,你也可以在控制器(Controller)的基类中定义

[php]

public function formatDate($timestamp){
    return Yii::app()->format->formatFriendlyDate($timestamp);
}

在视图(View)中就可以使用比较简单的方法

[php]
echo $this->formatDate($timestamp);

以上方法只是说明一下,具体的还是需要根据具体需求来完善。

希望上面的内容对您有用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值