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 strtr() 函数使用说明
Nov 21 PHP
smarty获得当前url的方法分享
Feb 14 PHP
php页码形式分页函数支持静态化地址及ajax分页
Mar 28 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHP创建多级目录的两种方法
Oct 28 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
php源码的安装方法和实例
Sep 26 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 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表单转换textarea换行符的方法
2010/09/10 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
大学系主任推荐信范文
2013/12/24 职场文书
抄作业检讨书
2014/02/17 职场文书
销售主管竞聘书
2014/03/31 职场文书
员工培训协议书
2014/09/15 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
mysql的Buffer Pool存储及原理
2022/04/02 MySQL