<?PHP

/**
* 传入日期格式或时间戳格式时间,返回与当前时间的差距,如1分钟前,2小时前,5月前,3年前等
* @param string or int $date 分两种日期格式"2013-12-11 14:16:12"或时间戳格式"1386743303"
* @param int $type
* @return string
*/
function formatTime($date = 0, $type = 1) { //$type = 1为时间戳格式,$type = 2为date时间格式
    date_default_timezone_set('PRC'); //设置成中国的时区
    switch ($type) {
        case 1:
            //$date时间戳格式
            $second = time() - $date;
            $minute = floor($second / 60) ? floor($second / 60) : 1; //得到分钟数
            if ($minute >= 60 && $minute < (60 * 24)) { //分钟大于等于60分钟且小于一天的分钟数,即按小时显示
                $hour = floor($minute / 60); //得到小时数
            } elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分钟数大于等于一天的分钟数,且小于一月的分钟数,则按天显示
                $day = floor($minute / ( 60 * 24)); //得到天数
            } elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分钟数大于等于一月且小于一年的分钟数,则按月显示
                $month = floor($minute / (60 * 24 * 30)); //得到月数
            } elseif ($minute >= (60 * 24 * 365)) { //如果分钟数大于等于一年的分钟数,则按年显示
                $year = floor($minute / (60 * 24 * 365)); //得到年数
            }
            break;
        case 2:
            //$date为字符串格式 2013-06-06 19:16:12
            $date = strtotime($date);
            $second = time() - $date;
            $minute = floor($second / 60) ? floor($second / 60) : 1; //得到分钟数
            if ($minute >= 60 && $minute < (60 * 24)) { //分钟大于等于60分钟且小于一天的分钟数,即按小时显示
                $hour = floor($minute / 60); //得到小时数
            } elseif ($minute >= (60 * 24) && $minute < (60 * 24 * 30)) { //如果分钟数大于等于一天的分钟数,且小于一月的分钟数,则按天显示
                $day = floor($minute / ( 60 * 24)); //得到天数
            } elseif ($minute >= (60 * 24 * 30) && $minute < (60 * 24 * 365)) { //如果分钟数大于等于一月且小于一年的分钟数,则按月显示
                $month = floor($minute / (60 * 24 * 30)); //得到月数
            } elseif ($minute >= (60 * 24 * 365)) { //如果分钟数大于等于一年的分钟数,则按年显示
                $year = floor($minute / (60 * 24 * 365)); //得到年数
            }
            break;
        default:
            break;
    }
    if (isset($year)) {
        return $year . '年前发布';
    } elseif (isset($month)) {
        return $month . '月前发布';
    } elseif (isset($day)) {
        return $day . '天前发布';
    } elseif (isset($hour)) {
        return $hour . '小时前发布';
    } elseif (isset($minute)) {
        return $minute . '分钟前发布';
    }
}

//测试代码:
$time1 = time() - 60 * 60 * 23;
echo formatTime($time1, 1);  //结果:23小时前
echo "<hr />";
$time2 = '2013-11-11 11:16:12'; //结果:3年前发布
echo formatTime($time2, 2);

?>

转载于:https://www.cnblogs.com/laowenBlog/p/6103787.html

PHP 显示文章发布日期 一小时前 一天前 一月前 一年前相关推荐

  1. 根据刚刚,1分钟前,1小时前,几天前显示文章发布日期

    一分钟之内发布的,显示"刚刚" 一小时之内发布的,显示"XX分钟前" 一个月之内发布的,显示"XX天前" 一个月外的直接显示日期. 代码收藏 ...

  2. 织梦dedecms文章发布日期时间调用标签大全

    DEDECMS织梦内容管理系统的文章发布时间显示格式可以多种样式,dedecms利用strftime()函数格式化时间,strftime()参数详解,包括年份日期进制.小时格式等. dedecms首页 ...

  3. thinkphp 引入时间_thinkphp 文章发布日期时间修改问题

    请问: 后台添加文章时自动显示当前日期,此时保存时当前日期保持成功,如果对当前日期修改保存后,保存的日期变成1970-01-01, 对保存后的文章修改,也同样不能修改时间,修改的话结果同上一样是197 ...

  4. Windows 10发布日期提速,将于7月29日上市

    昨天的一则传闻<Windows 10或从8月31日开售,价格也遭泄露>席卷了科技媒体的头条,而就在昨天晚上,微软官方博客正式公布了发布日期,相比传言的提前了一月,将于今年7月29日正式上市 ...

  5. 如何制定SEO文章发布模板?

    我们都知道SEO编辑每天面临着大量的文章发布,为了使得原创文章发挥最大的效果,我们通常会按照,符合SEO标准的策略,去发布文章,一个成熟的SEO团队,通常会有一个文章发布的模板,用于提高工作效率: 那 ...

  6. 将时间改为显示:几天前,几小时前,或者几分钟前

    (原博客地址:http://blog.csdn.net/kenhins/article/details/38010811) 方法一: 个人做法是保存时间戳,然后在前端用jq插件做转换,比如 smart ...

  7. php日期去掉分秒,Phpcms教程:解决内容页去掉发布时间的小时,分秒问题

    我们都应该知道,官方的内容页的显示发布时间的标签是 :$inputtime.显示的时候是显示:比如发布时间:2015-12-12 12:12:12.像这样的显示效果对采集的站形像影响显然是很不好的,因 ...

  8. 文章发布系统的设计与实现

    摘 要 随着计算机技术的迅速发展,网络正以一种前所未有的冲击力影响着人类的生产和生活.网络的快速发展,颠覆了传统的信息传播方式,冲破了传统的时间,空间的局限性,继而引发了人类阅读方式的变革.现如今,网 ...

  9. ASP.NET 学习笔记_13 文章发布管理小系统

    母版页:SiteFont.Master 1 <%@ Master Language="C#" AutoEventWireup="true" CodeBeh ...

最新文章

  1. 【高并发】面试官问我:为啥局部变量是线程安全的?
  2. 企业选择网站建设能够对自身带来哪些作用?
  3. linux 更改ctime_linux常用命令
  4. jquery on()方法和bind()方法的区别
  5. [leetcode]5343. 多次求和构造目标数组
  6. 【react】---组件传值的介绍
  7. 使用jquery获取父元素或父节点的方法
  8. 禁用安全模式小方法!!~
  9. 279.完全平方数(力扣leetcode) 博主可答疑该问题
  10. CronTrigger(重要,非常强大)
  11. 微信公众号服务号如何在线给粉丝发送模板消息
  12. SSRF漏洞理解进阶SSRF+gopher打内网(redis、mysql、fastcgi) SSRF相关基础概念
  13. 第五篇 python计算新版个人所得税
  14. winXP系统( 联想)台式电脑自动开机、关机图文详细解(三)
  15. 中国高铁砥砺前行,促进经济腾飞
  16. 电脑连接wifi浏览器打不开网页
  17. html文件用ppt打开,ppt文件怎么打开?ppt是什么?
  18. Layui的eleTree树式选择器使用
  19. 机器学习实践系列之3 - 人脸对齐(上)
  20. golang websocket简单实现

热门文章

  1. 设置linux初始root密码
  2. Docker入门六部曲——基本引导
  3. 2 用python进行OpenCV实战之图像基本知识
  4. tomcat外网映射工具
  5. Structured Streaming编程 Programming Guide
  6. Rust和C / C ++的跨语言链接时间优化LTO
  7. Linux下Flash-LED的处理
  8. 不是都需要ARM吗?
  9. ARMed解决方案对DSP的战争
  10. 无监督域对抗算法:ICCV2019论文解析