프로젝트의 시간은 항상 2014-10-20 10:22로 표시되어 있어 매우 지루해 보입니다. 웨이보, QQ 스페이스 등의 웹사이트에서는 일반적으로 시간이 몇 초 전, 몇 분 전, 몇 시간 전 등으로 표시되어 읽기 쉽습니다. 그렇다면 PHP를 사용하여 구현하는 방법은 무엇입니까?
일반적인 아이디어는 다음과 같습니다.
새해이고 3일 이상이면 특정 시간으로 표시됩니다
오늘이라면
1분 이내라면 몇 초 전인지 표시됩니다
1시간 이내라면 몇 분 전으로 표시됩니다
현재 날짜이고 1시간 이상이면 몇 시간 전으로 표시됩니다
어제라면 시간은 어제로 표시됩니다
전날이면 그저께 시간으로 표시됩니다
3일 이상인 경우(설날 제외) 해당 월의 날짜를 표시합니다
위의 아이디어를 바탕으로 구현 코드를 작성하는 것은 어렵지 않습니다.
구현 코드는 다음과 같습니다.
//格式化友好显示时间 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); } } }