<?php
/*** 类似微信的时间显示* 规则是:今天的,显示几秒前,几分钟前,几小时前,昨天的显示昨天 上午 XX:XX * 再往前,本周的,显示周几+时间,再往前,本年的,显示月日+时间,再往前,显示年月日+时间* 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){//未来$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).'小时前';}}elseif($time>$yesterday_time){//昨天$test = '昨天 '.$pre_name.' '.date('H:i',$time);}elseif($time>$now_week_time){//这周内$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;
}//########################上面是用函数实现的
//########################下面是用对象实现的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; //要计算的时间的时间戳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){//未来$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).'小时前';}}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){//这周内$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;}
}
//调用方法
$obj = new timespan();
for($i=0;$i<30;$i++){echo $obj->formate($time);echo '<br>';$time = $time-3600*6;
}

对于技术来说,写这个东西,真没技术含量,只所以贴出了,是想表明我想做产品的态度

转载于:https://www.cnblogs.com/tu6ge/p/5694800.html

php时间区间,优化显示相关推荐

  1. js手机端时间区间_js 时间区间

    对于页面加载时间的测试,简单的需求(仅仅是看看请求时间消耗分布)可以通过开发者工具或者Http Watch了解,但如果是想对页面加载进行优化,进行深入了解的(例如:渲染过程中的CPU开销.网络传输时间 ...

  2. 评审系统:查看互评信息实现及优化显示

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 为了培养更多的人,最近组长准备将廊坊一中交接给下版人员,从而让更多的人从中受益:但是在 ...

  3. python筛选时间段_django admin管理工具自定义时间区间筛选器DateRangeFilter介绍

    django admin管理工具有很多好用的功能,例如搜索框.筛选器等,编码简单,功能强大. 但是常规的时间筛选有一定局限性,只能显示一定时间节点到当前时间这一段时间段内的筛选结果,做不到自由定义时间 ...

  4. 1.19.5.4.流上的Join、常规Join、时间区间Join、时态表Join、基于处理时间的时态Join、时态表函数Join、用法

    1.19.5.4.流上的Join 1.19.5.4.1.常规Join 1.19.5.4.2.时间区间Join 1.19.5.4.3.时态表Join 1.19.5.4.4.基于处理时间的时态Join 1 ...

  5. linux显示前一天时间,在linux显示昨天(前一天)的日期

    day=`date -d '-7 day' +%Y-%m-%d`           //声明一个day变量,得到的是日期七天前的日期. man date,可以看到date可以显示当前的时间,修改系统 ...

  6. SpringBoot中对thymeleaf的时间进行格式化显示

    场景 对thymeleaf中时间进行格式化显示. 实现 <div class="form-group col-md-4 ml_10"><label>创建时间 ...

  7. java将两个区间范围合并_Java如何将若干时间区间进行合并的方法步骤

    问题原因 工作中突然有个场景,需要合并时间区间.将若干闭合时间区间合并,实现思路如下: 1. 先对日期区间进行按时间顺序排序,这样后一个区间(记为next)的from一定是不小于前一个(记为prev) ...

  8. [知识图谱实战篇] 八.HTML+D3绘制时间轴线及显示实体

    前面作者讲解了很多知识图谱原理知识,包括知识图谱相关技术.Neo4j绘制关系图谱等,但仍缺少一个系统全面的实例.为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者深入学习了张宏 ...

  9. mysql插入时间区间_mybatis插入数据时返回主键以及MySQL根据时间区间查询问题总结...

    最近做项目的过程中,在数据库方面遇到了两个问题,一是在插入一条数据的时候需要将该条数据的主键返回.二是根据时间区间进行查询时某一天的数据查询不到,在此总结记录一下. 1.如何在插入一条数据的同时将主键 ...

  10. mysql判断是否在日期区间_通过sql判断时间区间是否存在数据

    在做项目的时候遇到过一个问题,用户需要获取当前月或者几个月的数据,但是有一个要求,如果已经存在一张单已经包含了这几个月的数据,那么就不能再提取到重复的数据. 其实这个问题,我做完了我的方式之后才发现, ...

最新文章

  1. Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
  2. 【转载】x86和x64
  3. Elasticsearch集群Red,分片无法恢复:cannot allocatebecause all found copies of the shard are either stale or c
  4. 【CF 1188 A1,B,C】Add on a Tree // Count Pairs // Array Beauty
  5. 如何将本地 Windows 电脑中的文件复制(上传)到远程的 Windows 服务器主机上
  6. leetcode mysql 排名_(LeetCode:数据库)分数排名
  7. Qt中绑定信号槽之后,信号槽无效
  8. 2014 android 应用开发大赛,2014年全国高校移动互联网应用开发创新大赛
  9. python学习笔记六 初识面向对象上(基础篇)
  10. 为什么 Facebook 活得春风得意,而人人网却半死不活?
  11. mssql 事务的一个例子
  12. 构建复杂的应用程序(二)—— visual studio 下 C/C++ 项目开发
  13. 在哪里学python-学Python从哪里开始?
  14. 13.看板方法---使用两层系统扩展看板
  15. Java开发必备软件安装大全(建议学生党初学Java开发收藏)
  16. 自制一个简单的操作系统
  17. xsmax进入dfu模式_苹果xsmax怎么进入dfu
  18. 拼多多参谋:拼多多隐私号是什么意思?拼多多隐私号怎么查看真实号码?
  19. Python函数之def定义函数
  20. MPEG-7描述子(0)——颜色空间

热门文章

  1. springmvc十四:请求处理
  2. Java中的某些接口为什么没有任何方法?
  3. Docker 学习资源整理
  4. 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序...
  5. 网络获取json数据并解析
  6. erhai系统使用_web
  7. linux apache两种工作模式详解
  8. ASP.NET3种验证码[转]
  9. 181920.net用 文字存档
  10. openssl passwd之openssl命令详解