dede自定义时间格式如何设置?

99ANYc3cd6
预计阅读时长 11 分钟
位置: 首页 DEDE建站 正文

后台全局设置(最简单,影响所有标签)

这是最直接的方法,它会改变系统中所有使用 GetDateTime() 函数输出的时间格式,例如文章列表、文章内容页等。

dede自定义时间格式
(图片来源网络,侵删)

操作步骤:

  1. 登录你的DedeCMS后台。
  2. 在左侧菜单栏中,找到并点击 【系统】 -> 【系统基本参数】
  3. 在打开的页面中,找到 【核心设置】 这个板块。
  4. 找到 【时间格式】 这一栏。
  5. 在输入框中填入你想要的自定义时间格式,然后点击 【确定保存】

常用时间格式代码说明:

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 小写的上午/下午标记 ampm
A 大写的上午/下午标记 AMPM

实例:

dede自定义时间格式
(图片来源网络,侵删)
  • 默认格式 (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自定义时间格式
(图片来源网络,侵删)
{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时可能会被覆盖,请谨慎操作!

示例:修改后台文章列表的显示时间

  1. 找到文件 /dede/content_list.php
  2. 在这个文件中搜索与时间格式相关的代码,通常能找到类似这样的字符串:
    $row['pubdate'] = GetDateTimeMk($row['pubdate']);

    或者

    $row['pubdate'] = MyDate('Y-m-d H:i:s', $row['pubdate']);
  3. 修改 MyDate() 函数里的格式字符串为你想要的格式即可。

再次强调: 除非你非常清楚自己在做什么,否则不建议使用此方法。


总结与最佳实践

方法 优点 缺点 适用场景
后台全局设置 简单、快捷、全站生效 不够灵活,无法针对不同页面定制 网站整体风格统一,时间格式要求一致的情况
MyDate 灵活、强大、推荐 需要修改模板文件 绝大多数情况,需要在不同页面或不同位置显示不同时间格式
修改PHP源码 从根本上改变行为 有风险,升级后失效,不易维护 特殊定制需求,且不介意手动维护代码

给你的建议:

  1. 先尝试【方法一】,设置一个你网站常用的基础时间格式。
  2. 如果有特殊需求(比如列表页只显示日期,内容页显示完整时间),再使用 【方法二】MyDate 标签进行微调,这是最常用也是最正确的做法。
  3. 尽量避免使用【方法三】,除非你是一个有经验的开发者。

希望这个详细的教程能帮助你完美地自定义DedeCMS中的时间格式!

-- 展开阅读全文 --
头像
织梦会员登录注册模板如何快速适配?
« 上一篇 03-02
C语言struct内存对齐规则如何优化?
下一篇 » 03-02

相关文章

取消
微信二维码
支付宝二维码

目录[+]