PHP 显示文章发布日期 一小时前 一天前 一月前 一年前
<?PHP
/**
* 傳入日期格式或時間戳格式時間,返回與當前時間的差距,如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'); //設置成中國的時區
? ? switch ($type) {
? ?? ???case 1:
? ?? ?? ?? ?//$date時間戳格式
? ?? ?? ?? ?$second = time() - $date;
? ?? ?? ?? ?$minute = floor($second / 60) ? floor($second / 60) : 1; //得到分鐘數
? ?? ?? ?? ?if ($minute >= 60 && $minute < (60 * 24)) { //分鐘大于等于60分鐘且小于一天的分鐘數,即按小時顯示
? ?? ?? ?? ?? ? $hour = floor($minute / 60); //得到小時數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分鐘數大于等于一天的分鐘數,且小于一月的分鐘數,則按天顯示
? ?? ?? ?? ?? ? $day = floor($minute / ( 60 * 24)); //得到天數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分鐘數大于等于一月且小于一年的分鐘數,則按月顯示
? ?? ?? ?? ?? ? $month = floor($minute / (60 * 24 * 30)); //得到月數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 365)) { //如果分鐘數大于等于一年的分鐘數,則按年顯示
? ?? ?? ?? ?? ? $year = floor($minute / (60 * 24 * 365)); //得到年數
? ?? ?? ?? ?}
? ?? ?? ?? ?break;
? ?? ???case 2:
? ?? ?? ?? ?//$date為字符串格式 2013-06-06 19:16:12
? ?? ?? ?? ?$date = strtotime($date);
? ?? ?? ?? ?$second = time() - $date;
? ?? ?? ?? ?$minute = floor($second / 60) ? floor($second / 60) : 1; //得到分鐘數
? ?? ?? ?? ?if ($minute >= 60 && $minute < (60 * 24)) { //分鐘大于等于60分鐘且小于一天的分鐘數,即按小時顯示
? ?? ?? ?? ?? ? $hour = floor($minute / 60); //得到小時數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分鐘數大于等于一天的分鐘數,且小于一月的分鐘數,則按天顯示
? ?? ?? ?? ?? ? $day = floor($minute / ( 60 * 24)); //得到天數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分鐘數大于等于一月且小于一年的分鐘數,則按月顯示
? ?? ?? ?? ?? ? $month = floor($minute / (60 * 24 * 30)); //得到月數
? ?? ?? ?? ?} elseif ($minute >= (60 * 24 * 365)) { //如果分鐘數大于等于一年的分鐘數,則按年顯示
? ?? ?? ?? ?? ? $year = floor($minute / (60 * 24 * 365)); //得到年數
? ?? ?? ?? ?}
? ?? ?? ?? ?break;
? ?? ???default:
? ?? ?? ?? ?break;
? ? }
? ? if (isset($year)) {
? ?? ???return $year . '年前發布';
? ? } elseif (isset($month)) {
? ?? ???return $month . '月前發布';
? ? } elseif (isset($day)) {
? ?? ???return $day . '天前發布';
? ? } elseif (isset($hour)) {
? ?? ???return $hour . '小時前發布';
? ? } elseif (isset($minute)) {
? ?? ???return $minute . '分鐘前發布';
? ? }
}
//測試代碼:
$time1 = time() - 60 * 60 * 23;
echo formatTime($time1, 1);??//結果:23小時前
echo "<hr />";
$time2 = '2013-11-11 11:16:12'; //結果:3年前發布
echo formatTime($time2, 2);
?>
轉載于:https://www.cnblogs.com/laowenBlog/p/6103787.html
總結
以上是生活随笔為你收集整理的PHP 显示文章发布日期 一小时前 一天前 一月前 一年前的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亏吗 不懂价(⊙﹏⊙)
- 下一篇: 乌镇残疾证免票吗