PHP實(shí)現(xiàn)時(shí)間軸函數(shù)代碼
更新時(shí)間:2011年10月08日 23:29:59 作者:
我們?cè)谡搲l(fā)帖、發(fā)表評(píng)論、或者是使用QQ空間發(fā)布日志、微博發(fā)表言論時(shí),會(huì)看到發(fā)表的內(nèi)容后的時(shí)間顯示為“剛剛”、“5分鐘前”、“昨天10:23”等,而不是直接顯示具體日期和時(shí)間
本文將介紹如何實(shí)現(xiàn)基于時(shí)間軸的時(shí)間的轉(zhuǎn)換。
首先我們要明白時(shí)間的幾個(gè)函數(shù):
time():返回當(dāng)前的 Unix 時(shí)間戳
date():格式化一個(gè)本地時(shí)間/日期。
應(yīng)用舉例:
date("Y-m-d H:i:s",time()); //格式化當(dāng)前時(shí)間,輸出:2011-9-24 07:27:35
strtotime():將任何英文文本的日期時(shí)間描述解析為 Unix 時(shí)間戳。
應(yīng)用舉例:
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í)間戳。
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ù),直接輸出:
$times="1316932222";
echo tranTime($times);
首先我們要明白時(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);
您可能感興趣的文章:
- Android控件之使用ListView實(shí)現(xiàn)時(shí)間軸效果
- jQuery+HTML5+CSS3制作支持響應(yīng)式布局時(shí)間軸插件
- jQuery Timelinr實(shí)現(xiàn)垂直水平時(shí)間軸插件(附源碼下載)
- 基于jQuery和CSS3制作響應(yīng)式水平時(shí)間軸附源碼下載
- jQuery插件Timelinr 實(shí)現(xiàn)時(shí)間軸特效
- jQuery代碼實(shí)現(xiàn)發(fā)展歷程時(shí)間軸特效
- jQuery時(shí)間軸插件使用詳解
- DevExpress之ChartControl實(shí)現(xiàn)時(shí)間軸實(shí)例
- TimergliderJS 一個(gè)基于jQuery的時(shí)間軸插件
- Android自定義時(shí)間軸的實(shí)現(xiàn)過程
相關(guān)文章
在smarty中調(diào)用php內(nèi)置函數(shù)的方法
在smarty中調(diào)用php的內(nèi)置函數(shù),相信很多人都不是很很了解smarty的一個(gè)重要功能,就是能在smarty模板里面調(diào)用php的內(nèi)置函數(shù)2013-02-02phpmailer發(fā)送郵件之后,返回收件人是否閱讀了郵件的方法
這篇文章主要介紹了phpmailer發(fā)送郵件之后,返回收件人是否閱讀了郵件的方法,該功能非常簡單實(shí)用,需要的朋友可以參考下2014-07-07php安裝php_rar擴(kuò)展實(shí)現(xiàn)rar文件讀取和解壓的方法
這篇文章主要介紹了php安裝php_rar擴(kuò)展實(shí)現(xiàn)rar文件讀取和解壓的方法,涉及php擴(kuò)展組件的安裝與使用相關(guān)操作技巧,需要的朋友可以參考下2016-11-11PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法詳解
這篇文章主要介紹了PHP判斷一個(gè)數(shù)組是另一個(gè)數(shù)組子集的方法,結(jié)合實(shí)例形式分析了php循環(huán)遍歷、array_diff及array_intersect函數(shù)等方法實(shí)現(xiàn)數(shù)組子集判斷的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07