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中的内存管理问题
Aug 31 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
php图片添加文字水印实现代码
Mar 15 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
浅谈laravel中的关联查询with的问题
Oct 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自动注册登录验证机制实现代码
2011/12/20 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
简单谈谈Python流程控制语句
2016/12/04 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python hashlib模块实例使用详解
2019/12/24 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
两道JAVA笔试题
2016/09/14 面试题
《守株待兔》教学反思
2014/03/01 职场文书
房地产项目建议书
2014/03/12 职场文书
经管应届生求职信范文
2014/05/18 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
党支部培养考察意见
2015/06/02 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
python如何获取网络数据
2021/04/11 Python
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
Python集合的基础操作
2021/11/01 Python
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技