プロジェクトでは、時間が常に 2014-10-20 10:22 と表示されますが、これは非常に退屈に思えます。 Weibo や QQ Space などの Web サイトでは、通常、時刻が数秒前、数分前、数時間前などと読みやすく表示されます。これをフレンドリーな時刻形式と呼びます。では、php を使用して実装するにはどうすればよいでしょうか?
一般的な考え方は次のとおりです:
大晦日で3日以上ある場合は、具体的な時間として表示されます
今日だったら
1分以内であれば何秒前だったかが表示されます
1時間以内であれば数分前と表示されます
同日で1時間以上の場合は数時間前と表示されます
昨日であれば昨日の時刻を表示します
一昨日なら一昨日の時刻を表示します
3日以上(正月を挟まない)の場合は、その月の日を表示します
上記の考えに基づいて、実装コードを書くのは難しくありません:
実装コードは次のとおりです:
//フォーマットフレンドリーな表示時間
関数 formatTime($time){
$now=time();
$day=date('Y-m-d',$time);
$today=date('Y-m-d');
$dayArr=explode('-',$day);
$todayArr=explode('-',$today);
//この方法は 30 日を超えると正確ではない可能性がありますが、1 か月は 30 日または 31 日になるため、30 日以内であれば正確です。
$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 日以上
戻り日('Y-m-d',$time);
}その他{
if($days if($secs elseif($secs それ以外の場合はフロア($secs/3600)を返します。"時間前";
}else if($days $hour=date('h',$time);
「昨日」を返します。$hour.'point';
}elseif($days $hour=date('h',$time);
「一昨日」を返します.$hour.'point';
}その他{//3 日前
戻り日('m month d',$time);
}
}
}