CMS中一般顯示時間比較新的文章需要顯示幾分鍾前,幾天前這樣,我封裝好了兩個函數可以直接拿來用
下面是封裝好的方法
function formatTime($time) {
$time = (int) substr($time, 0, 10);
$int = time() - $time;
$str = '';
if ($int <= 2){
$str = sprintf('剛剛', $int);
}elseif ($int < 60){
$str = sprintf('%d秒前', $int);
}elseif ($int < 3600){
$str = sprintf('%d分鍾前', floor($int / 60));
}elseif ($int < 86400){
$str = sprintf('%d小時前', floor($int / 3600));
}elseif ($int < 2592000){
$str = sprintf('%d天前', floor($int / 86400));
}else{
$str = date('Y-m-d H:i:s', $time);
}
return $str;
}
或者 更詳細的
function formatTime($time)
{
$text = '';
$time = intval($time);
$ctime = time();
$t = $ctime - $time; //時間差
if ($t < 0) {
return date('Y-m-d', $time);
}
;
$y = date('Y', $ctime) - date('Y', $time);//是否跨年
switch ($t) {
case $t == 0:
$text = '剛剛';
break;
case $t < 60://一分鍾內
$text = $t . '秒前';
break;
case $t < 3600://一小時內
$text = floor($t / 60) . '分鍾前';
break;
case $t < 86400://一天內
$text = floor($t / 3600) . '小時前'; // 一天內
break;
case $t < 2592000://30天內
if($time > strtotime(date('Ymd',strtotime("-1 day")))) {
$text = '昨天';
} elseif($time > strtotime(date('Ymd',strtotime("-2 days")))) {
$text = '前天';
} else {
$text = floor($t / 86400) . '天前';
}
break;
case $t < 31536000 && $y == 0://一年內 不跨年
$m = date('m', $ctime) - date('m', $time) -1;
if($m == 0) {
$text = floor($t / 86400) . '天前';
} else {
$text = $m . '個月前';
}
break;
case $t < 31536000 && $y > 0://一年內 跨年
$text = (11 - date('m', $time) + date('m', $ctime)) . '個月前';
break;
default:
$text = (date('Y', $ctime) - date('Y', $time)) . '年前';
break;
}
return $text;
}