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扩展函数
Oct 09 PHP
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
PHP 彩色文字实现代码
Jun 29 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
PHP小教程之实现双向链表
Jun 12 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
php提取微信账单的有效信息
Oct 01 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 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
PHP截取中文字符串的问题
2006/07/12 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php中序列化与反序列化详解
2017/02/13 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
JavaScript splice()方法详解
2020/09/22 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
JavaScript编码小技巧分享
2020/09/17 Javascript
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
python 同时读取多个文件的例子
2019/07/16 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python如何处理程序无法打开
2020/06/16 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
集体婚礼策划方案
2014/02/22 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2015年老干部工作总结
2015/04/23 职场文书
Java无向树分析 实现最小高度树
2022/04/09 Javascript