您現在的位置是:網站首頁>PHPphp格式化時間戳函數寫法
php格式化時間戳函數寫法
宸宸2024-06-17【PHP】253人已圍觀
我們幫大家精選了相關的編程文章,網友通成濟根據主題投稿了本篇教程內容,涉及到php、格式化、php格式化時間戳相關內容,已被670網友關注,內容中涉及的知識點可以在下方直接下載獲取。
php格式化時間戳
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;
}
再分享一個類似的
//格式化友好顯示時間
function formatTime($time){
$now=time();
$day=date('Y-m-d',$time);
$today=date('Y-m-d');
$dayArr=explode('-',$day);
$todayArr=explode('-',$today);
//距離的天數,這種方法超過30天則不一定準確,但是30天內是準確的,因爲一個月可能是30天也可能是31天
$days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]);
//距離的秒數
$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);
}
}
}
