php格式化时间戳显示友好的时间实现思路及代码


Posted in PHP onOctober 23, 2014

在项目中时间一律显示为2014-10-20 10:22显得很呆板。在微博、QQ空间等网站通常会显示为几秒前,几分钟前,几小时前等容易阅读的时间,我们称之为友好的时间格式。那么用php怎么实现呢?

大体思路如下:

如果是跨年并且大于3天就显示为具体的时间

如果是今天的

如果是一分钟内则显示几秒之前

如果是一小时内则显示几分钟前

如果是当天且大于一小时则显示为几小时前

如果是昨天则显示为昨天几点

如果是前天则显示为前天几点

如果大于三天(没有跨年)则显示为几月几号

根据以上思路就不难写出实现代码了:

实现代码如下:

//格式化友好显示时间
function formatTime($time){
$now=time();
$day=date('Y-m-d',$time);
$today=date('Y-m-d');

$dayArr=explode('-',$day);
$todayArr=explode('-',$today);

//距离的天数,这种方法超过30天则不一定准确,但是30天内是准确的,因为一个月可能是30天也可能是31天
$days=($todayArr[0]-$dayArr[0])*365+(($todayArr[1]-$dayArr[1])*30)+($todayArr[2]-$dayArr[2]);
//距离的秒数
$secs=$now-$time;

if($todayArr[0]-$dayArr[0]>0 && $days>3){//跨年且超过3天
return date('Y-m-d',$time);
}else{

if($days<1){//今天
if($secs<60)return $secs.'秒前';
elseif($secs<3600)return floor($secs/60)."分钟前";
else return floor($secs/3600)."小时前";
}else if($days<2){//昨天
$hour=date('h',$time);
return "昨天".$hour.'点';
}elseif($days<3){//前天
$hour=date('h',$time);
return "前天".$hour.'点';
}else{//三天前
return date('m月d号',$time);
}
}
}
PHP 相关文章推荐
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
PHP 7.0.2 正式版发布
Jan 08 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
php版微信发红包接口用法示例
Sep 23 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 #PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 #PHP
10个实用的PHP正则表达式汇总
Oct 23 #PHP
PHP中怎样防止SQL注入分析
Oct 23 #PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 #PHP
常用PHP框架功能对照表
Oct 23 #PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 #PHP
You might like
PHP中动态HTML的输出技术
2006/10/09 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
JS读取XML文件示例代码
2013/11/15 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
微信小程序实现城市列表选择
2018/06/05 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
python实现各进制转换的总结大全
2017/06/18 Python
Python内建模块struct实例详解
2018/02/02 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python中yield的用法详解
2021/01/13 Python
如何写一个自定义标签
2012/12/28 面试题
医学生个人求职信范文
2013/09/24 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2014年网管工作总结
2014/12/11 职场文书
个人汇报材料范文
2014/12/30 职场文书
老龙头导游词
2015/02/11 职场文书
2015教师年度考核评语
2015/03/25 职场文书