最近在写yii中文百科的程序时遇到了这个问题,本来我一直习惯的是date("Y-m-d H:i",$time)的方式。 不过现在很多的网站时间显示为几分钟前、几小时前、几周前...为了追赶潮流我也写了个方法来实现它。
yii框架为我们提供了把一些字符串、时间戳等数据格式化为指定格式的类 ,我使用的方法就是继承了它,然后在配置文件里面修改一下配置就可以直接使用了。
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); } } }
... 'components' => array( ... 'format' => array( 'class' => "Formatter", ), ... ),...
接下来就是在程序中来使用了,方法如下,
echo Yii::app()->format->formatFriendlyDate($timestamp);
如果你觉得这样使用比较麻烦,你也可以在控制器(Controller)的基类中定义
public function formatDate($timestamp){ return Yii::app()->format->formatFriendlyDate($timestamp); }
在视图(View)中就可以使用比较简单的方法
echo $this->formatDate($timestamp);
以上方法只是说明一下,具体的还是需要根据具体需求来完善。
希望上面的内容对您有用