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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
8个PHP数组面试题
Jun 23 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 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标签的代码
2010/09/06 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
化学相关工作求职信
2013/10/02 职场文书
董事长岗位职责
2013/11/30 职场文书
学生自我鉴定模板
2013/12/30 职场文书
2014年保密工作总结
2014/11/22 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
孔繁森观后感
2015/06/10 职场文书
西游记读书笔记
2015/06/25 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers