php格式化时间戳


Posted in PHP onDecember 17, 2016

CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳(至少我习惯这样),所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码

下面是封装好的方法

function formatTime($time) {
    $time = (int) substr($time, 0, 10);
    $int = time() - $time;
    $str = '';
    if ($int <= 2){
      $str = sprintf('刚刚', $int);
    }elseif ($int < 60){
      $str = sprintf('%d秒前', $int);
    }elseif ($int < 3600){
      $str = sprintf('%d分钟前', floor($int / 60));
    }elseif ($int < 86400){
      $str = sprintf('%d小时前', floor($int / 3600));
    }elseif ($int < 2592000){
      $str = sprintf('%d天前', floor($int / 86400));
    }else{
      $str = date('Y-m-d H:i:s', $time);
    }
    return $str;
  }

或者 更详细的

function formatTime($time)
  {
    $text = '';
    $time = intval($time);
    $ctime = time();
    $t = $ctime - $time; //时间差
    if ($t < 0) {
      return date('Y-m-d', $time);
    }
    ;
    $y = date('Y', $ctime) - date('Y', $time);//是否跨年
    switch ($t) {
      case $t == 0:
        $text = '刚刚';
        break;
      case $t < 60://一分钟内
        $text = $t . '秒前';
        break;
      case $t < 3600://一小时内
        $text = floor($t / 60) . '分钟前';
        break;
      case $t < 86400://一天内
        $text = floor($t / 3600) . '小时前'; // 一天内
        break;
      case $t < 2592000://30天内
        if($time > strtotime(date('Ymd',strtotime("-1 day")))) {
          $text = '昨天';
        } elseif($time > strtotime(date('Ymd',strtotime("-2 days")))) {
          $text = '前天';
        } else {
          $text = floor($t / 86400) . '天前';
        }
        break;
      case $t < 31536000 && $y == 0://一年内 不跨年
        $m = date('m', $ctime) - date('m', $time) -1;

        if($m == 0) {
          $text = floor($t / 86400) . '天前';
        } else {
          $text = $m . '个月前';
        }
        break;
      case $t < 31536000 && $y > 0://一年内 跨年
        $text = (11 - date('m', $time) + date('m', $ctime)) . '个月前';
        break;
      default:
        $text = (date('Y', $ctime) - date('Y', $time)) . '年前';
        break;
    }

    return $text;
  }

再分享一个类似的

//格式化友好显示时间
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 相关文章推荐
PHP5中MVC结构学习
Oct 09 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
PHP开发注意事项总结
Feb 04 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
Laravel框架控制器,视图及模型操作图文详解
Dec 04 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 #PHP
简单解决微信文章图片防盗链问题
Dec 17 #PHP
PHP 7.1新特性的汇总介绍
Dec 16 #PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 #PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 #PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 #PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 #PHP
You might like
一个php作的文本留言本的例子(六)
2006/10/09 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHPMailer发送邮件
2016/12/28 PHP
php图片裁剪函数
2018/10/31 PHP
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
python获取糗百图片代码实例
2013/12/18 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
Python中格式化字符串的四种实现
2020/05/26 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
办公室年终个人自我评价
2013/10/28 职场文书
策划助理岗位职责
2013/11/18 职场文书
建材业务员岗位职责
2013/12/08 职场文书
《草原》教学反思
2014/02/15 职场文书
机械机修工岗位职责
2014/08/03 职场文书
上班迟到检讨书
2014/09/15 职场文书
个人批评与自我批评
2014/10/15 职场文书
南京导游词
2015/02/03 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
党员理论学习心得体会
2016/01/21 职场文书