«

EMLOG文章发布时间转变为多少年、月、天前

时间:2019-9-10 17:10     作者:博客志     分类: emlog教程


很多EMLOG模板都有文章的发布时间为多少天前、多少周前、多少月和多少年前的展示方式,但EMLOG的默认模板和部分模板并没有这样的展示功能,博客志现在就来分享一个EMLOG文章发布时间转变为多少年、月、天前的方法。

一、操作步骤

1、打开模板文件module.php,在最后插入如下代码

<?php
function sydate($ptime){
    //$ptime = strtotime($ptime);
    $etime = time() - $ptime;
    if($etime < 1){return '刚刚';}
    $interval = array(
        12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $ptime).')',
        30 * 24 * 60 * 60      => '个月前 ('.date('Y-m-d', $ptime).')',
        7 * 24 * 60 * 60       => '周前 ('.date('Y-m-d', $ptime).')',
        24 * 60 * 60           => '天前',
        60 * 60                => '小时前',
        60                     => '分钟前',
        1                      => '秒前',
    );
    foreach($interval as $secs => $str){
        $d = $etime / $secs;
        if ($d >= 1){
            $r = round($d);
            return $r.$str;
        }
    };
}
?>

2、不同位置使用不同的代码调用

在文章日志页面调用,则在模板文件echo_log.php合适的位置插入如下代码

<?php echo sydate($date);?>

在文章列表页面调用,则在模板文件log_list.php合适的位置插入如下代码

<?php echo sydate($value['date']);?>

3、如需添加时间段的话,则需要在module.php中再添加如下代码

<?php 
function sydate_g($t){
    if($t<=3){
        $ts = '拂晓';
    }elseif($t<=6){
        $ts = '黎明';
    }elseif($t<=9){
        $ts = '清晨';
    }elseif($t<=12){
        $ts = '早上';
    }elseif($t<=15){
        $ts = '中午';
    }elseif($t<=18){
        $ts = '下午';
    }elseif($t<=21){
        $ts = '傍晚';
    }elseif($t<=00){
        $ts = '深夜/午夜';
    }
    return $ts;
}
?>

4、将第一步中的return $r.$str;修改为如下代码

return $r . $str .sydate_g(date('G', $ptime));

5、其他步骤保持不变

二、原理解析

新增时间判断函数,在不同位置通过不同代码调用以展示多少年、月、天前的效果

三、注意事项

1、本教程所使用的代码中的月和年是按30天计算的,可能造成和准确日期有所差异