smarty自定义时间显示格式

如果是一天之内的话显示格式: xx小时xx分钟前
如果是30天之内显示格式: xx天前
如果是30天之前的则显示具体的时间


其实就是一种算法而已

首先在lib\smarty\plugins 新建一个modifier.getdate.php插件



<?php
/**
获取当前的时间格式
如果是一天之内的话显示格式: xx小时xx分钟前
如果是30天之内显示格式: xx天前
如果是30天之前的则显示具体的时间格式
 */
function smarty_modifier_getdate($timestamp)
{
    $time = time();//当前时间
    $time_ago = time()-3600*24*30;//7天之前
    $yesterday = time()-3600*24;//一天前
    $difference_time = $time - $timestamp;//要处理的时间、
    if($timestamp > $yesterday) {
        $diff_hours = $difference_time/3600;    //转换为小时带小数
        $ceil_hours = floor($diff_hours);        //取得整数小时去掉小数部分
        $diff_min = $diff_hours - $ceil_hours;    //取得小时的小数部分
        $ceil_min = floor($diff_min*60);    //取得时间差的分钟
        if($ceil_min < 1) {
            $ceil_min = 1;
        }
        if($ceil_hours > 0) {
            $getdate = $ceil_hours." 小时 ".$ceil_min." 分钟前";
        } else {
            
            $getdate = $ceil_min." 分钟前";    
        }
    } elseif($timestamp <= $yesterday && $timestamp > $time_ago) {
        $cha = $time - $timestamp;
        $day=floor($cha/86400);
        
        /*$day=floor($cha/86400); //获取两个时间戳的差值 天数
        $hour=floor(($cha%86400)/3600); //获取两个时间戳的差值 小时
        $minute=floor(($cha%3600)/60); //获取两个时间戳的差值 分钟
        $second=floor(($cha%60));*/        //获取两个时间戳的差值 秒数
        
        $getdate = $day." 天前";
    } else {
        $getdate = date('Y-m-d H:i:s', $timestamp);
    }
    
    return $getdate;
}

?>


模版调用方法  {{$val.last_comment_member.time|getdate}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值