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 对输入信息的进行安全过滤的函数代码
Jun 29 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
PHP邮件群发机实现代码
Feb 16 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
php中序列化与反序列化详解
Feb 13 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
php 截取中英文混合字符串的方法
May 31 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 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实现修改新闻时删除图片的方法
2015/05/12 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
python插入数据到列表的方法
2015/04/30 Python
python计算时间差的方法
2015/05/20 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
python 日志增量抓取实现方法
2018/04/28 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python3如何判断三角形的类型
2020/04/12 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
铭立家具面试题
2012/12/06 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
办公室副主任职责范本
2014/03/08 职场文书
采购意向书范本
2014/03/31 职场文书
赡养老人协议书
2014/04/21 职场文书
空气的环保标语
2014/06/12 职场文书
抗震救灾标语
2014/06/26 职场文书
办公室禁烟通知
2015/04/23 职场文书
律政俏佳人观后感
2015/06/09 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript