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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
php.ini中date.timezone设置分析
Jul 29 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
ThinkPHP 表单自动验证运用示例
Oct 13 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 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备份MYSQL数据的多种方法
2014/01/15 PHP
PHP进程同步代码实例
2015/02/12 PHP
浅谈PHP中的
2016/04/23 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
mac系统安装Python3初体验
2018/01/02 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
医学实习生自我鉴定
2013/12/12 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis