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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php实现文章评论系统
Feb 18 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开发文档 会员收费1期
2012/08/14 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
extJs 下拉框联动实现代码
2010/04/09 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python AES加密实例解析
2018/01/18 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
基于python代码实现简易滤除数字的方法
2018/07/17 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
班会关于环保演讲稿
2013/12/29 职场文书
教导处工作制度
2014/01/18 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
2015年银行员工工作总结
2015/04/24 职场文书