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 和 MySQL 基础教程(二)
Oct 09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
php+ajax实现无刷新数据分页的办法
Nov 02 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
Python卸载模块的方法汇总
2016/06/07 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python tkinter基本属性详解
2019/09/16 Python
python的命名规则知识点总结
2019/10/04 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
文明礼仪小标兵事迹
2014/01/12 职场文书
美术国培研修感言
2014/02/12 职场文书
中学语文教学反思
2016/02/16 职场文书
《海上日出》教学反思
2016/02/23 职场文书
python井字棋游戏实现人机对战
2022/04/28 Python