php格式化时间戳显示友好的时间实现思路及代码


Posted in PHP onOctober 23, 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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
解析php取整的几种方式
Jun 25 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
php提高网站效率的技巧
Sep 29 PHP
php分页查询的简单实现代码
Mar 14 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 #PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 #PHP
10个实用的PHP正则表达式汇总
Oct 23 #PHP
PHP中怎样防止SQL注入分析
Oct 23 #PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 #PHP
常用PHP框架功能对照表
Oct 23 #PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 #PHP
You might like
神族 PROTOSS 概述
2020/03/14 星际争霸
PHP几个实用自定义函数小结
2016/01/25 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
vue 接口请求地址前缀本地开发和线上开发设置方式
2020/08/13 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
创建省级文明单位实施方案
2014/02/27 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书