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 相关文章推荐
spl_autoload_register与autoload的区别详解
Jun 03 PHP
解析php取整的几种方式
Jun 25 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
php实现的xml操作类
Jan 15 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
详解PHP归并排序的实现
Oct 18 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 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
图书管理程序(三)
2006/10/09 PHP
php的curl实现get和post的代码
2008/08/23 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
php利用header函数下载各种文件
2016/08/24 PHP
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
javascript工具库代码
2012/03/29 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python基于DES算法加密解密实例
2015/06/03 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
劳资专员岗位职责
2013/12/27 职场文书
高中军训感言800字
2014/03/05 职场文书
生物技术专业求职信
2014/06/10 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2015新教师教学工作总结
2015/07/22 职场文书