|
首先我們要明白時(shí)間的幾個(gè)函數(shù):
time():返回當(dāng)前的 Unix 時(shí)間戳
date():格式化一個(gè)本地時(shí)間/日期。
應(yīng)用舉例:
復(fù)制代碼 代碼如下:
date("Y-m-d H:i:s",time()); //格式化當(dāng)前時(shí)間,輸出:2011-9-24 07:27:35
strtotime():將任何英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳。
應(yīng)用舉例:
復(fù)制代碼 代碼如下:
echo strtotime("+1 day"), "/n"; //輸出1天前的時(shí)間戳:1316932222
date_default_timezone_set():設(shè)定要用的默認(rèn)時(shí)區(qū)。
一般我們?cè)O(shè)置北京時(shí)間:date_default_timezone_set("PRC");
理解上面幾個(gè)函數(shù)后我們來寫時(shí)間軸函數(shù):
該函數(shù)的原理就是將系統(tǒng)當(dāng)前時(shí)間與目標(biāo)時(shí)間比較,得到一個(gè)差值,再將差值與時(shí)間范圍(轉(zhuǎn)換成秒)比較,根據(jù)其處在時(shí)間軸的范圍輸出不同的結(jié)果(如:5分鐘前)。為了便于計(jì)算,我們將時(shí)間都轉(zhuǎn)換成Unix時(shí)間戳。
復(fù)制代碼 代碼如下:
function tranTime($time) {
$rtime = date("m-d H:i",$time);
$htime = date("H:i",$time);
$time = time() - $time;
if ($time < 60) {
$str = '剛剛';
}
elseif ($time < 60 * 60) {
$min = floor($time/60);
$str = $min.'分鐘前';
}
elseif ($time < 60 * 60 * 24) {
$h = floor($time/(60*60));
$str = $h.'小時(shí)前 '.$htime;
}
elseif ($time < 60 * 60 * 24 * 3) {
$d = floor($time/(60*60*24));
if($d==1)
$str = '昨天 '.$rtime;
else
$str = '前天 '.$rtime;
}
else {
$str = $rtime;
}
return $str;
}
函數(shù)tranTime()中的參數(shù)$time必須為Unix時(shí)間戳,如果不是請(qǐng)先用strtotime()將其轉(zhuǎn)換成Unix時(shí)間戳。上面的代碼一看就明白了,不用再多述。
調(diào)用函數(shù),直接輸出:
復(fù)制代碼 代碼如下:
$times="1316932222";
echo tranTime($times);
php技術(shù):PHP實(shí)現(xiàn)時(shí)間軸函數(shù)代碼,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。