php时间戳格式化显示友好的时间函数分享


Posted in PHP onOctober 21, 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 什么是PEAR?(第三篇)
Mar 19 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
PHP简单实现无限级分类的方法
May 13 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
PHP多进程编程实例详解
Jul 19 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 #PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 #PHP
php读取目录及子目录下所有文件名的方法
Oct 20 #PHP
php中的字符编码转换函数用法示例
Oct 20 #PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 #PHP
php的ZipArchive类用法实例
Oct 20 #PHP
php自定义apk安装包实例
Oct 20 #PHP
You might like
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
用JS实现选项卡
2020/03/23 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
python tkinter组件摆放方式详解
2019/09/16 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
2014学年自我鉴定
2014/02/23 职场文书
四群教育工作实施方案
2014/03/26 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
奖学金个人总结
2015/03/04 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers