我們在論壇發文、發表評論、或者是使用QQ空間發布日誌、微博發表言論時,會看到發表的內容後的時間顯示為“剛剛”、“5分鐘前”、“昨天10:23”等,而不是直接顯示特定日期和時間。
本文將介紹如何實現基於時間軸的時間的轉換。
首先我們要明白時間的幾個函數:
time():傳回目前的 Unix 時間戳
date():格式化一個本地時間/日期。
應用範例:
date("Y-m-d H:i:s",time());
格式化目前時間,輸出:2010-10-11 05:27:35
strtotime():將任何英文文字的日期時間描述解析為Unix 時間戳記。
應用範例:
echo strtotime("+1 day"), "n";
輸出1天前的時間戳:1286861475
date_default_timezone_set():設定要使用的預設時區。
一般我們設定北京時間:date_default_timezone_set("PRC");
理解上面幾個函數後我們來寫時間軸函數:
該函數的原理就是將系統當前時間與目標時間比較,得到一個差值,然後將差值與時間範圍(轉換成秒)比較,根據其處在時間軸的範圍輸出不同的結果(如:5分鐘前)。為了方便計算,我們將時間都轉換成Unix時間戳記。
function tranTime($time) {
$rtime = date("m-d H:i",$time);
$htime = date("H:i",$time); $time;
if ($time $str = '剛';
} floor($time/60); $str = $min.'分鐘前';
}
elseif ($time $h = floor($time/(60*60));
$str = $h.'小時前' .$htime;
}
elseif ($time 1)
$ str = '昨天'.$rtime;
else
$str = '前天'.$rtime = $rtime; }
return $str;
}
函數tranTime()中的參數$time必須為Unix時間戳,如果不是請先用strtotime()將其轉換成Unix時間戳記。上面的程式碼一看就明白了,不用再多述。
呼叫函數,直接輸出:
$times="1286861696 ";
echo tranTime($times);