把兩個日期格式的字符串轉化成unix時間戳,然后相減獲得時間戳差,最后判斷剩余時間,生成類似(2小時30分鐘20秒前發布)這樣的時間格式,代碼如下:
- public function gettime($time_s,$time_n){
- $time_s = strtotime($time_s);
- $time_n = strtotime($time_n);
- $strtime = '';
- $time = $time_n-$time_s;
- if($time >= 86400){
- return $strtime = date('Y-m-d H:i:s',$time_s);
- }
- if($time >= 3600){
- $strtime .= intval($time/3600).'小時';
- $time = $time % 3600;
- }else{
- $strtime .= '';
- }
- if($time >= 60){
- $strtime .= intval($time/60).'分鐘';
- $time = $time % 60;
- }else{
- $strtime .= '';
- }
- if($time > 0){
- $strtime .= intval($time).'秒前';
- }else{
- $strtime = "時間錯誤";
- }
- return $strtime;
- }
首先判斷想減之后的值是否大于一天的秒數86400秒,如果大于的話就返回原來的數據庫查詢出來的時間,然后判斷是否在1小時到一天之內,也就是3600秒-86400秒,如果是之內的話就返回X小時,得到結果后還需使用取余數的方法去除小時部分的時間,使用 %取余.
然后判斷是否在1分鐘到一小時之內,也就是60秒-3600秒,如果是之內的話就返回X分鐘,得到結果后還需使用取余數的方法去除分鐘部分的時間,使用 %取余.
最后判斷是否在1分鐘之內,也就是0秒-60秒,如果是之內的話就返回X分秒.
注意:上面得出的結果都是使用.=連接的,這樣最后才得到一個整體的時間.
新聞熱點
疑難解答