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 相关文章推荐
PHP 数据结构 算法 三元组 Triplet
Jul 02 PHP
php模拟post行为代码总结(POST方式不是绝对安全)
Feb 22 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
php生成网页桌面快捷方式
May 05 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
PHP hex2bin()函数用法讲解
Feb 25 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
设定php简写功能的方法
Nov 28 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数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
php使用curl出现Expect:100-continue解决方法
2015/03/03 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
详解如何在云服务器上部署Laravel
2017/06/30 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
javascript 年月日联动实现核心代码
2009/12/21 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
js实现简单登录功能的实例代码
2013/11/09 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
JS图片预加载插件详解
2017/06/21 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
Python获取指定字符前面的所有字符方法
2018/05/02 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python tkinter图形界面代码统计工具(更新)
2019/09/18 Python
python实现马丁策略的实例详解
2021/01/15 Python
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
美国主要的特色咖啡和茶公司:Peet’s Coffee
2020/02/14 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
逃课检讨书
2015/01/26 职场文书
画展邀请函
2015/01/31 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
致运动员加油稿
2015/07/21 职场文书