首页 > 其他分享 >dedebiz发布时间显示为今天昨天前天的方法

dedebiz发布时间显示为今天昨天前天的方法

时间:2024-04-24 09:14:48浏览次数:24  
标签:me 60 pubdate 前天 updays elseif 昨天 && dedebiz

dedebiz的文章发布时间调用格式一般分为一下这些:

[field:pubdate function="MyDate('Y-m-d',@me)"/]

2013-12-17

[field:pubdate function="MyDate('Y-m-d H:i',@me)"/]

2013-12-17 16:10

[field:pubdate function=MyDate('m-d',@me)/]

12-17

[field:pubdate function=MyDate('y-m-d',@me)/]

13-12-17

[field:pubdate function='strftime("%y-%m-%d %H:%M:%S",@me)'/]

13-12-17 10:35:21

[field:pubdate function='strftime("%m-%d %H:%M:%S",@me)'/]

12-17 10:35:21

[field:pubdate function='strftime("%y年%m月%d日",@me)'/]

13年12月17日

[field:pubdate function='strftime("%Y年%m月%d日 %H点%M分%S秒",@me)'/]

13年12月17日 12点12分30秒

有的时候,我们想做到不直接显示具体时间,而是以几天前、几月前这样的时间间隔方式来显示, 更利于让访客直观地看到文章的发布时段,以上的调用方法则不适用了。

教大家如何实现显示发布时间为多少时间前,主要有两种方法。

一、模板直接写PHP语句

[field:pubdate runphp='yes']

$today = Floor(time()/(3600 * 24));

$senday= Floor(@me/(3600 * 24));

$updays = $today-$senday;

if($updays >= 30 && $updays < 60) @me="1个月前";

elseif($updays >= 60 && $updays < 90) @me="2个月前";

elseif($updays >= 90 && $updays < 120) @me="3个月前";

elseif($updays >= 120 && $updays < 150) @me="4个月前";

elseif($updays >= 150 && $updays < 180) @me="5个月前";

elseif($updays >= 180 && $updays < 210) @me="6个月前";

elseif($updays >= 210 && $updays < 240) @me="7个月前";

elseif($updays >= 240 && $updays < 270) @me="8个月前";

elseif($updays >= 270 && $updays < 300) @me="9个月前";

elseif($updays > 300 && $updays < 330) @me="10个月前";

elseif($updays > 330 && $updays < 360) @me="11个月前";

elseif($updays >= 360) @me="一年前";

elseif($updays==0) @me = "今日";

else @me = $updays."天前";

[/field:pubdate]

二、自定义函数

在system/extend.func.php文件中加入以下代码:

//文章发布多少时间前

function showTime($time) {
$today = Floor(time()/(3600 * 24));

$senday= Floor($time/(3600 * 24));

$updays = $today-$senday;

if($updays==0)

$str = '今天';

elseif ($updays >=1 && $updays < 31) {
$str = $updays.'天前 ';

}

elseif ($updays >= 31&& $updays < 365) {
$m = floor($updays / 31);

$str = $m.'月前 ';

}

elseif ($updays >= 31&& $updays < 365) {
$y = floor($updays / (31* 365));

$str = $y.'年前 ';

}

else {
$str = $rtime;

}

return $str;

}

如果要显示几分钟和几小时,则用下面这个

function showTime($time) {
    $rtime = date("m-d H:i",$time);
    $htime = date("H:i",$time);
    $etime = time() - $time;
    if ($etime < 1) return '刚刚';
    $interval = array (
        12 * 30 * 24 * 60 * 60  =>  ' 年 前',
        30 * 24 * 60 * 60       =>  ' 个 月 前',
        7 * 24 * 60 * 60        =>  ' 周 前',
        24 * 60 * 60            =>  ' 天 前',
        60 * 60                 =>  ' 小 时 前',
        60                      =>  ' 分 钟 前',
        1                       =>  ' 秒 前'
    );
    foreach ($interval as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . $str;
        }
    };
}

调用方法

列表页:[field:pubdate function="showTime(@me)" /]

内容页:{dede:field.pubdate function="showTime(@me)"/}

以上两种方法都可以实现调用,第一种方法是直接把php语法写入模版中,会显得文件比较冗余,建议使用第二种自定函数的方式,简单明了。

标签:me,60,pubdate,前天,updays,elseif,昨天,&&,dedebiz
From: https://www.cnblogs.com/dedebiz/p/18154301

相关文章

  • dedebiz列表添加自增序号代码
    dedebiz列表添加序号代码如下://默认从1开始自增[field:globalname=autoindex/]但是有时候我们可能不需要从1开始,比如从2开始,那么就需要这样写://实现从2或者其他数字开始自增修改@me+1即可[field:globalname=autoindexrunphp="yes"]@me=@me+1;[/field:global]如果想让它......
  • dedebiz常用标签调用代码
    dedebiz常用标签调用代码:1、网站首页标题调用标签{dede:global.cfg_webname/}或{dede:globalname='cfg_webname'/}2、网站首页描述调用标签3、栏目标题调用标签{dede:field.title/}_{dede:global.cfg_webname/}或{dede:field.seotitle/}4、文章标题调用标签{dede:fieldn......
  • dedebiz的tag标签{dede:tag}调用参考说明
    dedebiz的tag标签静态调用可以用来提高网站文章的收录。具体调用方法也即:在文章article_article.htm有需要的位置添加以下标签:关键字:{dede:tagrow='8'getall='0'}<ahref='/a/tags/[field:id/]'>[field:tag/]</a>{/dede:tag}或者{dede:tagrow='8'getall='0&......
  • dedebiz文章内页自动给正文图片加了style样式怎么去掉
    dede文章内页自动给正文图片加了style样式怎么去掉 打开:/system/archive/archives.class.php查找:box-shadow,找到如下:margin:20px0;box-shadow:01px2pxrgba(0,0,0,.1)改成下面这样:box-shadow:00px0pxrgba(0,0,0,.1)正文图片中的边框就给去掉了。......
  • [转帖]mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间,mysq
    https://www.cnblogs.com/jpfss/p/8759284.html1、当前日期selectDATE_SUB(curdate(),INTERVAL0DAY);2、明天日期selectDATE_SUB(curdate(),INTERVAL-1DAY);3、昨天日期selectDATE_SUB(curdate(),INTERVAL1DAY);4、前一个小时时间selectdate_sub(now(),in......
  • 关于昨天写的文件读写的一个巨大改进
    在昨天写的文件读写的练习中,文件路径必须要一字不差的写出来,但是这种写法一旦文件换了位置,就会导致读写出错误 所以我们用双下划线加dirname来进行文件路径表达  ......
  • 无法言说亦或是不再记得的昨天的梦
    T1statement给定\(l,r\),选出一些\(\in[l,r]\)的数,问他们的按位或有多少种不同的值。solution沙比分讨题。考虑求出\(l,r\)最高的不同位\(i\),比这位更高的就不影响了,考虑第\(i\)位选或不选。不选,那么我们可以用的数就是\(l\to2^i-1\),显然不同数就是\(2^i-l\)......
  • 01 \| 网络互联的昨天、今天和明天:HTTP 协议的演化
    作者:四火你好,我是四火。HTTP协议是互联网基础中的基础,和很多技术谈具体应用场景不同的是,几乎所有的互联网服务都是它的应用,没有它,互联网的“互联”将无从谈起,因此我们把它作为正式学习的开篇。说到其原理和协议本身,我相信大多数人都能说出个大概来,比如,有哪些常见的方法,常......
  • 时间格式化,获取最近七天时间,获取昨天,明天得时间等
    时间格式化整理优化时间类发现之前发现大部分这样写的,获取当前日期,再一个个取年,月,日,再拼接成自己想要得格式letcurDate=newDate()letyyyy=curDate.getFullYear()letmm=curDate.getMonth()+1mm=mm<10?("0"+mm):mmletdd=curDate.getDate()......
  • moment 获取本年/本季度/本月/本周/今天/上年/上季度/上月/上周/昨天 开始结束时间
    今天1conststartTime=moment(moment().startOf('day').valueOf()).format('YYYY/MM/DDHH:mm:ss');2constendTime=moment(moment().valueOf()).format('YYYY/MM/DDHH:mm:ss');昨天1conststartTime=moment(moment().add(-1,�......