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横向重复区域显示二法
Sep 25 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
php网页病毒清除类
Dec 08 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
简述php环境搭建与配置
Dec 05 PHP
PHP从数组中删除元素的四种方法实例
May 12 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
docker-compose部署php项目实例详解
Jul 30 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
上海无线电三厂简史修改版
2021/03/01 无线电
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
HTML的select控件美化
2017/03/27 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
python获得一个月有多少天的方法
2015/06/04 Python
python中星号变量的几种特殊用法
2016/09/07 Python
Python编程scoketServer实现多线程同步实例代码
2018/01/29 Python
Python3的高阶函数map,reduce,filter的示例详解
2019/07/23 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python处理document文档保留原样式
2019/09/23 Python
python如何爬取网页中的文字
2020/07/28 Python
Python如何读写CSV文件
2020/08/13 Python
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
NET程序员上机面试题
2015/05/23 面试题
承诺书格式
2014/06/03 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
入党个人总结范文
2015/03/02 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书