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 和 MySQL 基础教程(三)
Oct 09 PHP
多重?l件?合查?(一)
Oct 09 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
php str_pad 函数用法简介
Jul 11 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
Yii CGridView用法实例详解
Jul 12 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
PHP基于swoole多进程操作示例
Aug 12 PHP
php生成HTML文件的类方法
Oct 11 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
PHP基本语法总结
2014/09/06 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
原生JS实现留言板功能
2020/02/08 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python获取当前路径实现代码
2017/05/08 Python
简单学习Python多进程Multiprocessing
2017/08/29 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Python插件机制实现详解
2020/05/04 Python
Python中的Cookie模块如何使用
2020/06/04 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
党的群众路线调研报告
2014/11/03 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2016年春节慰问信息
2015/03/25 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
Python Django模型详解
2021/10/05 Python
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript