RELATEED CONSULTING
相關咨詢
選擇下列産品馬上(shàng)在線溝通(tōng)
服務時(shí)間(jiān):9:00-18:00
你(nǐ)可(kě)能遇到了下面的問題
關閉右側工具欄
PHP實現時(shí)間(jiān)軸函數(shù)
  • 作(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);