如果是一天之内的话显示格式: 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}}