- 相關推薦
php格式化時間戳的方法技巧
導語:CMS中一般顯示時間比較新的文章需要顯示幾分鐘前,幾天前這樣,但是一般數(shù)據(jù)庫里面記錄的都是時間戳(至少我習慣這樣),所以就需要一個轉化的過程,下面就由小編為大家介紹一下php格式化時間戳的方法技巧,歡迎大家閱讀!
下面是封裝好的方法
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;
}
再分享一個類似的
//格式化友好顯示時間
function formatTime($time){
$now=time();
$day=date('Y-m-d',$time);
$today=date('Y-m-d');
$dayArr=explode('-',$day);
$todayArr=explode('-',$today);
//距離的天數(shù),這種方法超過30天則不一定準確,但是30天內是準確的,因為一個月可能是30天也可能是31天
$days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]);
//距離的秒數(shù)
$secs=$now-$time;
if($todayArr[0]-$dayArr[0]>0 && $days>3){//跨年且超過3天
return date('Y-m-d',$time);
}else{
if($days<1){//今天
if($secs<60)return $secs.'秒前';
elseif($secs<3600)return floor($secs/60)."分鐘前";
else return floor($secs/3600)."小時前";
}else if($days<2){//昨天
$hour=date('h',$time);
return "昨天".$hour.'點';
}elseif($days<3){//前天
$hour=date('h',$time);
return "前天".$hour.'點';
}else{//三天前
return date('m月d號',$time);
}
}
}
【php格式化時間戳的方法技巧】相關文章:
PHP日期函數(shù)date格式化UNIX時間的方法10-02
PHP時間轉換Unix時間戳代碼08-19
分析php日期轉時間戳06-11
如何利用PHP時間轉換Unix時間戳代碼10-21
php日期轉時間戳 指定日期轉換成時間戳09-26
PHP獲取當前日期和時間及格式化方法參數(shù)10-07
php生成圓角圖片的方法技巧07-20
PHP自動獲取關鍵字的方法技巧08-11