后台全局设置(最简单,影响所有标签)
这是最直接的方法,它会改变系统中所有使用 GetDateTime() 函数输出的时间格式,例如文章列表、文章内容页等。

(图片来源网络,侵删)
操作步骤:
- 登录你的DedeCMS后台。
- 在左侧菜单栏中,找到并点击 【系统】 -> 【系统基本参数】。
- 在打开的页面中,找到 【核心设置】 这个板块。
- 找到 【时间格式】 这一栏。
- 在输入框中填入你想要的自定义时间格式,然后点击 【确定保存】。
常用时间格式代码说明:
DedeCMS的时间格式使用PHP的 date() 函数语法,下面是一些常用的代码:
| 代码 | 说明 | 示例 |
|---|---|---|
Y |
4位数字的完整年份 | 2025 |
y |
2位数字的年份 | 23 |
m |
带前导0的数字月份 | 09 |
n |
不带前导0的数字月份 | 9 |
d |
带前导0的日期 | 08 |
j |
不带前导0的日期 | 8 |
H |
24小时制,带前导0 | 14 |
G |
24小时制,不带前导0 | 14 |
h |
12小时制,带前导0 | 02 |
g |
12小时制,不带前导0 | 2 |
i |
分钟,带前导0 | 05 |
s |
秒,带前导0 | 09 |
a |
小写的上午/下午标记 | am 或 pm |
A |
大写的上午/下午标记 | AM 或 PM |
实例:

(图片来源网络,侵删)
- 默认格式 (Y-m-d H:i:s):
2025-09-08 14:30:45 - 简洁格式 (Y-m-d):
2025-09-08 - 中文格式 (Y年m月d日):
2025年09月08日 - 带星期 (Y-m-d (D)):
2025-09-08 (Fri) - 中文带星期 (Y年m月d日 星期W):
2025年09月08日 星期五 - 带上午/下午 (Y-m-d h:i A):
2025-09-08 02:30 PM
优点:
- 一劳永逸,设置后全站生效。
- 无需修改任何代码。
缺点:
- 影响范围是全局的,如果你只想在特定地方(比如文章列表)显示一种格式,在文章内容页显示另一种格式,就无法实现了。
使用模板标签 MyDate(推荐,灵活控制)
这是最常用也是最灵活的方法。MyDate 是DedeCMS的一个自定义函数,专门用于格式化时间,并且可以接受一个时间戳作为参数。
语法:

(图片来源网络,侵删)
{dede:field function='MyDate("你的格式", @me)'/}
或者
{dede:MyDate('你的格式', '时间戳')/}
参数说明:
你的格式:就是你想要的时间格式,和方法一中提到的代码一样。@me:这是一个特殊变量,代表当前字段的原始值,在文章列表页调用文章发布时间,@me就是文章的发布时间戳。时间戳:你也可以直接提供一个Unix时间戳。
使用场景:
场景1:修改文章列表页的时间格式
假设你想在文章列表页只显示 年-月-日,但后台全局设置是 年-月-日 时:分:秒。
打开你的列表模板文件,通常是 /templets/default/list_article.htm。
找到调用文章时间的地方,代码通常是这样:
[field:pubdate function="GetDateTime(@me)"/]
将其修改为使用 MyDate:
[field:pubdate function='MyDate("Y-m-d", @me)'/]
这样,列表页的时间格式就变成 2025-09-08 了,而其他页面(如内容页)仍然是后台的全局格式。
场景2:在内容页调用特定格式的时间
页模板 /templets/default/article_article.htm。
默认调用时间的代码可能是:
[field:pubdate function="GetDateTime(@me)"/]
如果你想显示 发布于 2025年09月08日 14:30 这样的格式,可以修改为:
发布于 {dede:field.pubdate function='MyDate("Y年m月d日 H:i", @me)'/}
场景3:调用当前系统时间
如果你想显示“最后更新时间”为当前服务器时间:
最后更新时间:{dede:MyDate('Y-m-d H:i:s', @me)/}
(这里的 @me 在这种情况下不起作用,但保持这样写是安全的习惯)。
修改PHP源码文件(不推荐,仅限高级用户)
如果你发现某个地方的时间调用非常顽固,或者你想修改后台管理界面的显示格式,可以考虑直接修改PHP源码。但此方法有风险,升级DedeCMS时可能会被覆盖,请谨慎操作!
示例:修改后台文章列表的显示时间
- 找到文件
/dede/content_list.php。 - 在这个文件中搜索与时间格式相关的代码,通常能找到类似这样的字符串:
$row['pubdate'] = GetDateTimeMk($row['pubdate']);
或者
$row['pubdate'] = MyDate('Y-m-d H:i:s', $row['pubdate']); - 修改
MyDate()函数里的格式字符串为你想要的格式即可。
再次强调: 除非你非常清楚自己在做什么,否则不建议使用此方法。
总结与最佳实践
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 后台全局设置 | 简单、快捷、全站生效 | 不够灵活,无法针对不同页面定制 | 网站整体风格统一,时间格式要求一致的情况 |
MyDate |
灵活、强大、推荐 | 需要修改模板文件 | 绝大多数情况,需要在不同页面或不同位置显示不同时间格式 |
| 修改PHP源码 | 从根本上改变行为 | 有风险,升级后失效,不易维护 | 特殊定制需求,且不介意手动维护代码 |
给你的建议:
- 先尝试【方法一】,设置一个你网站常用的基础时间格式。
- 如果有特殊需求(比如列表页只显示日期,内容页显示完整时间),再使用 【方法二】 的
MyDate标签进行微调,这是最常用也是最正确的做法。 - 尽量避免使用【方法三】,除非你是一个有经验的开发者。
希望这个详细的教程能帮助你完美地自定义DedeCMS中的时间格式!
