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作的文本留言本的例子(六)
Oct 09 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
PHP文件上传原理简单分析
May 29 PHP
优化PHP程序的方法小结
Feb 23 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP实现将textarea的值根据回车换行拆分至数组
Jun 10 PHP
PHP实现动态web服务器方法
Jul 29 PHP
PHP6新特性分析
Mar 03 PHP
php制作简单模版引擎
Apr 07 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP判断是否微信访问的方法示例
Mar 27 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Jan 22 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,ajax实现分页
2008/03/27 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
PHP发送短信代码分享
2015/08/11 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
Koa项目搭建过程详细记录
2018/04/12 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
基于python爬虫数据处理(详解)
2017/06/10 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python with语句和过程抽取思想
2019/12/23 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
局域网定义和特性
2016/01/23 面试题
战友聚会邀请函
2014/01/18 职场文书
见习期个人总结
2015/03/05 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
MyBatis 动态SQL全面详解
2021/10/05 MySQL
python程序的组织结构详解
2021/12/06 Python