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模板引擎SMARTY
Oct 09 PHP
第十节--抽象方法和抽象类
Nov 16 PHP
PHP 中的批处理的实现
Jun 14 PHP
PHP学习笔记之一
Jan 17 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
浅谈PHP的反射API
Feb 26 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 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
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php解析url的三个示例
2014/01/20 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
php 的反射详解及示例代码
2016/08/25 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
Node.js的Express框架使用上手指南
2016/03/12 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
基于Python实现用户管理系统
2019/02/26 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python实现简单坦克大战
2020/03/27 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
大学生个人自我鉴定
2013/12/03 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
Web应用开发TypeScript使用详解
2022/05/25 Javascript
vue router 动态路由清除方式
2022/05/25 Vue.js
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL