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安全编程之加密功能
Oct 09 PHP
一篇不错的PHP基础学习笔记
Mar 18 PHP
如何在PHP程序中防止盗链
Apr 09 PHP
php escape URL编码
Dec 10 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
PHP生成随机用户名和密码的实现代码
Feb 27 PHP
php实现水仙花数示例分享
Apr 03 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 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
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
Use Word to Search for Files
2007/06/15 Javascript
js直接编辑当前cookie的脚本
2008/09/14 Javascript
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
如何屏蔽防止别的网站嵌入框架代码
2015/08/24 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
pandas重新生成索引的方法
2018/11/06 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
django和vue实现数据交互的方法
2019/08/21 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
中专生学习生活的自我评价分享
2013/10/27 职场文书
体育运动口号
2014/06/09 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
广告业务员岗位职责
2015/02/13 职场文书
考研经验交流会策划书
2015/11/02 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书