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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
php 无法载入mysql扩展
Mar 12 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
rephactor 优秀的PHP的重构工具
Jun 09 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
鼠标事件延时切换插件
2011/03/12 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
2017/12/19 jQuery
vue实现树形菜单效果
2018/03/19 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
极简的Python入门指引
2015/04/01 Python
python处理二进制数据的方法
2015/06/03 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
详解Python字符串切片
2019/05/20 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
政法大学毕业生自荐信范文
2014/01/01 职场文书
周年庆典主持词
2014/04/02 职场文书
开会通知
2015/04/20 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫