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 相关文章推荐
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
php关联数组快速排序的方法
Apr 17 PHP
php生成二维码
Aug 10 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
Linux系统下安装PHP7.3版本
Jun 26 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
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
Git命令之分支详解
2021/03/02 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
Django xadmin安装及使用详解
2020/10/26 Python
一款基于css3的列表toggle特效实例教程
2015/01/04 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
网站客服岗位职责
2014/04/05 职场文书
警示教育观后感
2015/06/17 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js