经常在微博上看到显示几分钟前、几小时前、前天、昨天、今天、几天前、等功能,比直接显示日期时间感觉要好一些,经过一翻琢磨,其实也很容易,转换成时间戳,然后计算两个时间的时间差,再换算就可以了。其实泪雪之前在设计开发泪雪旗下极客行站点的时候就已经研究这个功能了,这里就简单上一下代码。
以下代码可以实现上述的功能外,还根据时间判断了显示方式,7天内,超过3天的则会显示显示几天前,而超过7天则会显示年月日小时分钟。
<?php
//时间转换函数
function tranTime($time) {
$rtime = date("m-d H:i",$time);
$rtime2 = date("Y-m-d H:i",$time);
$htime = date("H:i",$time);
$time = time() - $time;
if ($time < 60) {
$str = '刚刚';
}
elseif ($time < 60 * 60) {
$min = floor($time/60);
$str = $min.' 分钟前';
}
elseif ($time < 60 * 60 * 24) {
$h = floor($time/(60*60));
$str = $h.'小时前 '.$htime;
}
elseif ($time < 60 * 60 * 24 * 3) {
$d = floor($time/(60*60*24));
if($d==1)
$str = '昨天 '.$htime;
else
$str = '前天 '.$htime;
}
elseif ($time < 60 * 60 * 24 * 7) {
$d = floor($time/(60*60*24));
$str = $d.' 天前 '.$htime;
} elseif ($time < 60 * 60 * 24 * 30) {
$str = $rtime;
}
else {
$str = $rtime2;
}
return $str;
}
$times=strtotime($w_time);//$w_time 存储的时间字段
echo tranTime($times);
?>