PHP 显示文章发布日期 一小时前 一天前 一月前 一年前
<?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);
?>
PHP 显示文章发布日期 一小时前 一天前 一月前 一年前的更多相关文章
- 织梦dedecms文章发布日期时间调用标签大全
dedecms首页时间标签: 1.12-27 样式 [field:pubdate function='strftime("%m-%d",@me)'/] 2.May 15, 2012 ...
- dedecms调用文章发布日期
<span>[field:pubdate function="MyDate('m-d',@me)"/]</span>
- wordpress中文章发布时间不显示?用get_the_date代替the_date
今天发现,在主题中部分地方使用the_date函数来显示文章发布的时间时,竟然发生不显示时间的情况,再仔细看了一下这些文章,有些都是经过几次修改和保存的,可能是由于the_date只是显示文章第一次发 ...
- php 显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前
/* *function:显示某一个时间相当于当前时间在多少秒前,多少分钟前,多少小时前 *timeInt:unix time时间戳 *format:时间显示格式 */ public function ...
- Dedecms调用文章发布时间的方法
在织梦系统中,有时候需要调用文章发布的时间,格式不同,代码不同.现总结织梦系统dedecms调用文章发布时间的几种方法. 11-20 样式 ([field:pubdate function='st ...
- Laravel 项目使用 Carbon 人性化显示文章发表时间
比如说有这样一个需求:一篇文章的发表时间: **距离现在时间** **显示格式** < 1小时 xx分钟前 1小时-24小时 xx小时前 1天-10天 xx天前 >10天 直接显示日期 针 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用 我相信目前国内富文本编辑器中KindEditor 属于前 ...
- Spring Boot 2.x 综合示例-整合thymeleaf、mybatis、shiro、logging、cache开发一个文章发布管理系统
一.概述 经过HelloWorld示例(Spring Boot 2.x 快速入门(上)HelloWorld示例)( Spring Boot 2.x 快速入门(下)HelloWorld示例详解)两篇的学 ...
- 一步步开发自己的博客 .NET版(4、文章发布功能)百度编辑器
前言 这次开发的博客主要功能或特点: 第一:可以兼容各终端,特别是手机端. 第二:到时会用到大量html5,炫啊. 第三:导入博客园的精华文章,并做分类.(不要封我) 第四:做个插件,任何网站上的技术 ...
随机推荐
- new Array(n) 的坑 密集数组和稀疏数组
今天写Vue时遇到一个奇怪问题,需要监控网页上的input 是否都有值 // var blanks = new Array(number); // blanks的监控属性 var emptyNumbe ...
- marquee上下左右循环无缝滚动代码
一.横向滚动<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN "><HTML>< ...
- “fatal error C1010”错误解决的三种方法
尝试写了一个简单的类文件,但在编译的时候提示错误,具体错误信息如下: fatal error C1010: unexpected end of file while looking for preco ...
- JS学习-创建对象
1.标准创建对象模式 var person = new Object(); person.name = "Nicholas"; person.age = 29; person.jo ...
- ng-repeat 里 使用ng-show ng-hide出现闪动
在项目中使用ng-repeat在表格中循环输出一组数据的时候,需要对表格中的每一列(每一列为数组的一个元素--对象)添加控制按钮. 列表样式 我的期望是 初始化 ----每一行不可编辑,保存按钮是隐藏 ...
- AJAX获取数据成功后的返回数据如何声明成全局变量
var result=""; $.ajax({ type: "post", url: "../reportRule/main.do?method=se ...
- remove mysql
apt-get --purge remove mysql-server mysql-client mysql-common apt-get autoremove rm -rf /etc/mysql r ...
- JSP页面JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions&quo ...
- 表现层的设计(二)——MVC如何处理复杂的界面元素
需求描述 一个比较复杂的页面,界面中包含的元素数据来自于许多个有关联或者无关联的表,然后我们要做的就是将数据呈现在界面上. 10年前大概都是这么干的 直接写一个复杂的SQL语句,返回一个包含所需数据的 ...
- libc++abi.dylib`__cxa_throw: 视频播放时异常
这两天研究视频播放,集成RTMP视频出现的异常,刚好看到一篇博客,楼主使用[AVAudioPlayer Play]时出现了异常...记录下来: 由于xcode中设置了当所有异常出现时的断点,,解决办法 ...