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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
Jun 20 PHP
php发送post请求的三种方法
Feb 11 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP实现单条sql执行多个数据的insert语句方法
Oct 11 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
2015/10/21 Javascript
JavaScript模拟push
2016/03/06 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Django 外键的使用方法详解
2019/07/19 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS