- 作(zuò)者:admin
- 發表時(shí)間(jiān):2013-07-02 14:17:28
- 來(lái)源:未知
我們在論壇發帖、發表評論、或者是使用QQ空(kōng)間(jiān)發布日志(zhì)、微博發表言論時(shí),會(huì)看到發表的內(nèi)容後的時(shí)間(jiān)顯示為(wèi)“剛剛”、“5分鍾前”、“昨天10:23”等,而不是直接顯示具體(tǐ)日期和(hé)時(shí)間(jiān)。
本文将介紹如何實現基于時(shí)間(jiān)軸的時(shí)間(jiān)的轉換。
首先我們要明(míng)白時(shí)間(jiān)的幾個(gè)函數(shù):
time():返回當前的 Unix 時(shí)間(jiān)戳
date():格式化一個(gè)本地時(shí)間(jiān)/日期。
應用舉例:
date("Y-m-d H:i:s",time());
格式化當前時(shí)間(jiān),輸出:2010-10-11 05:27:35
strtotime():将任何英文文本的日期時(shí)間(jiān)描述解析為(wèi) Unix 時(shí)間(jiān)戳。
應用舉例:
echo strtotime("+1 day"), "\n";
輸出1天前的時(shí)間(jiān)戳:1286861475
date_default_timezone_set():設定要用的默認時(shí)區(qū)。
一般我們設置北京時(shí)間(jiān):date_default_timezone_set("PRC");
理(lǐ)解上(shàng)面幾個(gè)函數(shù)後我們來(lái)寫時(shí)間(jiān)軸函數(shù):
該函數(shù)的原理(lǐ)就是将系統當前時(shí)間(jiān)與目标時(shí)間(jiān)比較,得(de)到一個(gè)差值,再将差值與時(shí)間(jiān)範圍(轉換成秒(miǎo))比較,根據其處在時(shí)間(jiān)軸的範圍輸出不同的結果(如:5分鍾前)。為(wèi)了便于計(jì)算(suàn),我們将時(shí)間(jiān)都轉換成Unix時(shí)間(jiān)戳。
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.'小(xiǎo)時(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必須為(wèi)Unix時(shí)間(jiān)戳,如果不是請(qǐng)先用strtotime()将其轉換成Unix時(shí)間(jiān)戳。上(shàng)面的代碼一看就明(míng)白了,不用再多(duō)述。
調用函數(shù),直接輸出:
$times="1286861696 "; echo tranTime($times);