最基本的时间调用标签
在列表页模板(通常是 list_article.htm)中,最常用的时间标签是 pubdate 和 senddate。

(图片来源网络,侵删)
pubdate: 文章的发布时间(发布时间)。senddate: 文章的录入时间(投稿时间)。
通常情况下,我们使用 pubdate。
调用完整的时间戳(不推荐直接使用)
[field:pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/]
这行代码会输出类似 2025-10-27 15:30:00 的格式,虽然可用,但不够灵活,通常我们会用更简洁的方式。
调用标准格式(年-月-日)
这是最常用、最简单的方式,直接输出 YYYY-MM-DD 格式的日期。
[field:pubdate function='MyDate("Y-m-d",@me)'/]
输出效果:2025-10-27

(图片来源网络,侵删)
调用其他常用格式
通过修改 MyDate 函数的第二个参数,可以轻松改变日期格式。
| 格式代码 | 说明 | 示例 |
|---|---|---|
Y |
4位年份 | 2025 |
y |
2位年份 | 23 |
m |
2位月份(带前导0) | 10 |
n |
月份(不带前导0) | 10 |
d |
2位日期(带前导0) | 27 |
j |
日期(不带前导0) | 27 |
H |
24小时制小时(带前导0) | 15 |
i |
分钟(带前导0) | 30 |
s |
秒(带前导0) | 00 |
F |
完整的月份名称 | October |
M |
3个字母的月份缩写 | Oct |
D |
3个字母的星期缩写 | Fri |
示例:
-
格式:年/月/日
[field:pubdate function='MyDate("Y/m/d",@me)'/]输出:
2025/10/27
(图片来源网络,侵删) -
格式:月-日
[field:pubdate function='MyDate("m-d",@me)'/]输出:
10-27 -
格式:年月日时分
[field:pubdate function='MyDate("Y-m-d H:i",@me)'/]输出:
2025-10-27 15:30
更高级的时间处理
显示“X天前”、“X小时前”等相对时间
这种格式在新闻、博客类网站中非常流行,能提升用户体验,我们需要使用自定义函数来实现。
操作步骤:
-
找到并打开
include/extendfun.php文件。 -
在文件末尾的
?>之前,添加以下自定义函数:// 时间格式化,将时间戳转为“刚刚”、“X分钟前”、“X小时前”等 function formatTime($smtime) { $etime = time() - $smtime; 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 => $unit) { $d = $etime / $secs; if ($d >= 1) { $r = round($d); return $r . $unit; } } } -
保存
extendfun.php文件。 -
在列表页模板中使用:
[field:pubdate function='formatTime(@me)'/]
输出效果:
- 如果文章是5分钟前发布的,显示:
5分钟前 - 如果文章是3小时前发布的,显示:
3小时前 - 如果文章是昨天发布的,显示:
1天前 - 如果文章是30天前发布的,显示:
1个月前
- 如果文章是5分钟前发布的,显示:
综合示例:列表页时间调用代码
下面是一个典型的列表页文章循环代码片段,展示了如何结合标题、摘要和时间来显示一篇文章。
{dede:list pagesize='10'}
<li>
<!-- 文章标题,点击跳转到详情页 -->
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<!-- -->
<p>[field:description function='cn_substr(@me, 100)']...</p>
<!-- 文章发布时间,这里使用“X天前”的格式 -->
<span class="post-time">发布于:[field:pubdate function='formatTime(@me)'/]</span>
</li>
{/dede:list}
在这个例子中:
[field:arcurl/]是文章的链接地址。[field:title/]是文章标题。[field:description/]是文章摘要,cn_substr函数用于截取前100个字符。[field:pubdate function='formatTime(@me)'/]调用了我们刚刚创建的自定义函数来显示相对时间。
常见问题与注意事项
-
为什么我的时间不显示或显示错误?
- 检查标签拼写:确保
pubdate或senddate拼写正确。 - 检查函数名:确保
MyDate或自定义的formatTime函数名拼写正确。 - 检查缓存:DedeCMS 有强大的缓存机制,修改模板后,请务必在后台 “系统” -> “一键更新网站” -> “更新HTML” 中更新你的列表页,或者直接清除缓存。
- 检查文件权限:确保你有权限修改
extendfun.php文件,并且保存成功。
- 检查标签拼写:确保
-
strftime和MyDate有什么区别?strftime是 PHP 的原生函数,依赖于服务器的本地化设置。MyDate是 DedeCMS 自定义的函数,更简单、更常用,并且不受服务器环境的影响,推荐使用MyDate。
-
如何只显示“月-日”格式? 直接使用
[field:pubdate function='MyDate("m-d",@me)'/]即可。
希望这份详细的指南能帮助您在 DedeCMS 列表页完美地调用和显示时间!
