PHP 显示文章发布日期 一小时前 一天前 一月前 一年前
<?PHP
/**
* 傳入日期格式或時間戳格式時間,返回與當(dāng)前時間的差距,如1分鐘前,2小時前,5月前,3年前等
* @param string or int $date 分兩種日期格式"2013-12-11 14:16:12"或時間戳格式"1386743303"
* @param int $type
* @return string
*/
function formatTime($date = 0, $type = 1) { //$type = 1為時間戳格式,$type = 2為date時間格式
? ? date_default_timezone_set('PRC'); //設(shè)置成中國的時區(qū)
? ? switch ($type) {
? ?? ???case 1:
? ?? ?? ?? ?//$date時間戳格式
? ?? ?? ?? ?$second = time() - $date;
? ?? ?? ?? ?$minute = floor($second / 60) ? floor($second / 60) : 1; //得到分鐘數(shù)
? ?? ?? ?? ?if ($minute >= 60 && $minute < (60 * 24)) { //分鐘大于等于60分鐘且小于一天的分鐘數(shù),即按小時顯示
? ?? ?? ?? ?? ? $hour = floor($minute / 60); //得到小時數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分鐘數(shù)大于等于一天的分鐘數(shù),且小于一月的分鐘數(shù),則按天顯示
? ?? ?? ?? ?? ? $day = floor($minute / ( 60 * 24)); //得到天數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分鐘數(shù)大于等于一月且小于一年的分鐘數(shù),則按月顯示
? ?? ?? ?? ?? ? $month = floor($minute / (60 * 24 * 30)); //得到月數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 365)) { //如果分鐘數(shù)大于等于一年的分鐘數(shù),則按年顯示
? ?? ?? ?? ?? ? $year = floor($minute / (60 * 24 * 365)); //得到年數(shù)
? ?? ?? ?? ?}
? ?? ?? ?? ?break;
? ?? ???case 2:
? ?? ?? ?? ?//$date為字符串格式 2013-06-06 19:16:12
? ?? ?? ?? ?$date = strtotime($date);
? ?? ?? ?? ?$second = time() - $date;
? ?? ?? ?? ?$minute = floor($second / 60) ? floor($second / 60) : 1; //得到分鐘數(shù)
? ?? ?? ?? ?if ($minute >= 60 && $minute < (60 * 24)) { //分鐘大于等于60分鐘且小于一天的分鐘數(shù),即按小時顯示
? ?? ?? ?? ?? ? $hour = floor($minute / 60); //得到小時數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分鐘數(shù)大于等于一天的分鐘數(shù),且小于一月的分鐘數(shù),則按天顯示
? ?? ?? ?? ?? ? $day = floor($minute / ( 60 * 24)); //得到天數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分鐘數(shù)大于等于一月且小于一年的分鐘數(shù),則按月顯示
? ?? ?? ?? ?? ? $month = floor($minute / (60 * 24 * 30)); //得到月數(shù)
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 365)) { //如果分鐘數(shù)大于等于一年的分鐘數(shù),則按年顯示
? ?? ?? ?? ?? ? $year = floor($minute / (60 * 24 * 365)); //得到年數(shù)
? ?? ?? ?? ?}
? ?? ?? ?? ?break;
? ?? ???default:
? ?? ?? ?? ?break;
? ? }
? ? if (isset($year)) {
? ?? ???return $year . '年前發(fā)布';
? ? } elseif (isset($month)) {
? ?? ???return $month . '月前發(fā)布';
? ? } elseif (isset($day)) {
? ?? ???return $day . '天前發(fā)布';
? ? } elseif (isset($hour)) {
? ?? ???return $hour . '小時前發(fā)布';
? ? } elseif (isset($minute)) {
? ?? ???return $minute . '分鐘前發(fā)布';
? ? }
}
//測試代碼:
$time1 = time() - 60 * 60 * 23;
echo formatTime($time1, 1);??//結(jié)果:23小時前
echo "<hr />";
$time2 = '2013-11-11 11:16:12'; //結(jié)果:3年前發(fā)布
echo formatTime($time2, 2);
?>
轉(zhuǎn)載于:https://www.cnblogs.com/laowenBlog/p/6103787.html
總結(jié)
以上是生活随笔為你收集整理的PHP 显示文章发布日期 一小时前 一天前 一月前 一年前的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亏吗 不懂价(⊙﹏⊙)
- 下一篇: cocos2d-x 3.10 PageV