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文件
Jan 04 PHP
php学习之变量的使用
May 29 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
Sep 15 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 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 foreach循环使用详解与实例代码
2010/05/08 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
js+css在交互上的应用
2010/07/18 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
Vue自定义toast组件的实例代码
2018/08/15 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python3个性签名设计实现代码
2018/06/19 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
RealTek面试题
2016/06/28 面试题
总经理办公室主任岗位职责
2013/11/12 职场文书
保密工作承诺书
2014/08/29 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android