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代码的53条建议
Mar 27 PHP
php MsSql server时遇到的中文编码问题
Jun 11 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
PHP在不同页面间传递Json数据示例代码
Jun 08 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
php结合curl实现多线程抓取
Jul 09 PHP
php项目开发中用到的快速排序算法分析
Jun 25 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
真正的ZIP文件操作类(php)
2007/07/21 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
JavaScript事件列表解说
2006/12/22 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
JavaScript中的null和undefined区别介绍
2015/01/01 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python中random模块生成随机数详解
2016/03/10 Python
Django返回json数据用法示例
2016/09/18 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
python3 读写文件换行符的方法
2018/04/09 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
python抽取指定url页面的title方法
2018/05/11 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
Python基于当前时间批量创建文件
2020/05/07 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
正风肃纪剖析材料
2014/02/18 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
离婚协议书范文
2015/01/26 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL