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 printf输出格式使用说明
Dec 05 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
php自定义的格式化时间示例代码
Dec 05 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
PHPTree――php快速生成无限级分类
Mar 30 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php7新特性的理解和比较总结
Apr 14 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 escape URL编码
2008/12/10 PHP
php之可变函数的实例详解
2017/09/13 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jQuery输入城市查看地图使用介绍
2013/05/08 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Python的条件语句与运算符优先级详解
2015/10/13 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
校园报刊亭的创业计划书
2014/01/02 职场文书
培训研修方案
2014/06/06 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
入党积极分子考察意见
2015/06/02 职场文书
班委竞选稿范文
2015/11/21 职场文书
银行工作心得体会范文
2016/01/23 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技