php时间区间,优化显示
生活随笔
收集整理的這篇文章主要介紹了
php时间区间,优化显示
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<?php
/*** 類似微信的時(shí)間顯示* 規(guī)則是:今天的,顯示幾秒前,幾分鐘前,幾小時(shí)前,昨天的顯示昨天 上午 XX:XX * 再往前,本周的,顯示周幾+時(shí)間,再往前,本年的,顯示月日+時(shí)間,再往前,顯示年月日+時(shí)間* User: tu6ge* Date: 2016/7/21* Time: 15:21*/function timespan($time){$the_day_time = strtotime(date('Y-m-d',$time));$one_day_second = $time-$the_day_time;if($one_day_second<3600*6){$pre_name = '凌晨';}elseif($one_day_second<3600*12){$pre_name = '上午';}elseif($one_day_second<3600*18){$pre_name = '下午';}else{$pre_name = '晚上';}$now_time = time();$today_time = strtotime(date('Y-m-d'));$yesterday_time = $today_time-86400;$now_week = date('w',$now_time);$now_week==0 && $now_week=7;$now_week_time = $today_time-($now_week-1)*86400;$now_year_time = strtotime(date('Y-01-01'));$the_week = date('w',$time);$the_week==0 && $the_week=7;$week_pre_name = '';switch ($the_week){case 1:$week_pre_name = '一';break;case 2:$week_pre_name = '二';break;case 3:$week_pre_name = '三';break;case 4:$week_pre_name = '四';break;case 5:$week_pre_name = '五';break;case 6:$week_pre_name = '六';break;case 7:$week_pre_name = '日';break;default:$week_pre_name = '';}$test = '';if($time>=$now_time){//未來(lái)$test = '';}elseif($time>$today_time){//今天$diff_time = $now_time-$time;if($diff_time<60){$test = $diff_time.'秒前';}elseif($diff_time<3600){$test = intval($diff_time/60).'分鐘前';}else{$test = intval($diff_time/3600).'小時(shí)前';}}elseif($time>$yesterday_time){//昨天$test = '昨天 '.$pre_name.' '.date('H:i',$time);}elseif($time>$now_week_time){//這周內(nèi)$test = '周'.$week_pre_name.' '.$pre_name.' '.date('H:i',$time);}elseif($time>$now_year_time){//今年$test = date('m月d日',$time).' '.$pre_name.' '.date('H:i',$time);}else{//更早$test = date('Y月m月d日',$time).' '.$pre_name.' '.date('H:i',$time);}return $test;
}$time = time()-2;
for($i=0;$i<30;$i++){echo timespan($time);echo '<br>';$time = $time-3600*6;
}//########################上面是用函數(shù)實(shí)現(xiàn)的
//########################下面是用對(duì)象實(shí)現(xiàn)的define('NOW_TIME',time());
define('TODAY_TIME',strtotime(date('Y-m-d',NOW_TIME)));
define('YESTERDAY_TIME',TODAY_TIME-86400);
$now_week = date('w',NOW_TIME);
$now_week==0 && $now_week=7;
define('NOW_WEEK_TIME',TODAY_TIME-($now_week-1)*86400);
define('NOW_YEAR_TIME',strtotime(date('Y-01-01')));class timespan{public $time; //要計(jì)算的時(shí)間的時(shí)間戳const now_time=NOW_TIME;const today_time=TODAY_TIME;const yesterday_time = YESTERDAY_TIME;const now_week_time = NOW_WEEK_TIME;const now_year_time = NOW_YEAR_TIME;function __construct($time=null){!empty($time) && $this->time = $time;$this->time = $time;}/*** 返回 上午,下午,晚上,凌晨* @param null $time* @return string*/function get_pre_name($time=null){!empty($time) && $this->time = $time;$the_day_time = strtotime(date('Y-m-d',$this->time));$one_day_second = $this->time-$the_day_time;if($one_day_second<3600*6){$pre_name = '凌晨';}elseif($one_day_second<3600*12){$pre_name = '上午';}elseif($one_day_second<3600*18){$pre_name = '下午';}else{$pre_name = '晚上';}return $pre_name;}function get_week_name($time=null){!empty($time) && $this->time = $time;$the_week = date('w',$this->time);$the_week==0 && $the_week=7;$week_pre_name = '';switch ($the_week){case 1:$week_pre_name = '一';break;case 2:$week_pre_name = '二';break;case 3:$week_pre_name = '三';break;case 4:$week_pre_name = '四';break;case 5:$week_pre_name = '五';break;case 6:$week_pre_name = '六';break;case 7:$week_pre_name = '日';break;default:$week_pre_name = '';}return $week_pre_name;}function formate($time = null){!empty($time) && $this->time = $time;$test = '';if($this->time>=self::now_time){//未來(lái)$test = '';}elseif($this->time>self::today_time){//今天$diff_time = self::now_time-$this->time;if($diff_time<60){$test = $diff_time.'秒前';}elseif($diff_time<3600){$test = intval($diff_time/60).'分鐘前';}else{$test = intval($diff_time/3600).'小時(shí)前';}}elseif($this->time>self::yesterday_time){//昨天$pre_name = $this->get_pre_name();$test = '昨天 '.$pre_name.' '.date('H:i',$this->time);}elseif($this->time>self::now_week_time){//這周內(nèi)$pre_name = $this->get_pre_name();$week_pre_name = $this->get_week_name();$test = '周'.$week_pre_name.' '.$pre_name.' '.date('H:i',$this->time);}elseif($this->time>self::now_year_time){//今年$pre_name = $this->get_pre_name();$test = date('m月d日',$this->time).' '.$pre_name.' '.date('H:i',$this->time);}else{//更早$pre_name = $this->get_pre_name();$test = date('Y月m月d日',$this->time).' '.$pre_name.' '.date('H:i',$this->time);}return $test;}
}
//調(diào)用方法
$obj = new timespan();
for($i=0;$i<30;$i++){echo $obj->formate($time);echo '<br>';$time = $time-3600*6;
}
?對(duì)于技術(shù)來(lái)說(shuō),寫這個(gè)東西,真沒技術(shù)含量,只所以貼出了,是想表明我想做產(chǎn)品的態(tài)度
轉(zhuǎn)載于:https://www.cnblogs.com/tu6ge/p/5694800.html
總結(jié)
以上是生活随笔為你收集整理的php时间区间,优化显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP与Java使用des加密通讯
- 下一篇: ELK Stack 日志分析 Elast