下面我将为你详细讲解如何使用,并提供各种常用场景的示例代码。

(图片来源网络,侵删)
核心函数:strftime()
strftime() 函数用于格式化本地时间/日期,在 DedeCMS 的模板文件(.htm)中,你可以在需要的地方直接使用它。
基本语法:
{strftime('格式化字符串', 时间戳)}
- 格式化字符串:由特定字母组成的代码,用来定义输出的格式。
%Y代表四位年份,%m代表月份。 - 时间戳:这是一个可选参数,如果你不提供,它会默认使用当前时间,在 DedeCMS 中,你通常使用
arc.arcid(文章ID)或arc.senddate(文章发布时间戳)等字段来获取文章的发布时间。
常用格式化代码表
| 代码 | 说明 | 示例 |
|---|---|---|
%Y |
四位年份 | 2025 |
%y |
两位年份 | 23 |
%m |
两位月份 (01-12) | 08 |
%d |
两位日期 (01-31) | 15 |
%H |
24小时制的小时 (00-23) | 14 |
%I |
12小时制的小时 (01-12) | 02 |
%M |
两位分钟 (00-59) | 30 |
%S |
两位秒数 (00-59) | 05 |
%p |
AM 或 PM | PM |
%a |
星期几的缩写 (Sun, Mon, ...) | Mon |
%A |
星期几的全称 (Sunday, Monday, ...) | Monday |
%b |
月份的缩写 (Jan, Feb, ...) | Aug |
%B |
月份的全称 (January, February, ...) | August |
%F |
完整的日期格式 (等价于 %Y-%m-%d) |
2025-08-15 |
%T |
完整的时间格式 (等价于 %H:%M:%S) |
14:30:05 |
实际应用示例
以下代码通常放在 DedeCMS 的列表模板(list_article.htm)、文章内容模板(article_article.htm)等文件中使用。
仅显示文章发布的小时和分钟
假设你想显示文章的发布时间是 "14:30" 格式。

(图片来源网络,侵删)
[field:senddate function="strftime('%H:%M',@me)"/]
解释:
field:senddate:获取文章的发布时间戳。function="strftime(..., @me)":对获取到的时间戳应用strftime函数。'%H:%M':这是格式化字符串,%H代表24小时制的小时,%M代表分钟,中间用冒号 分隔。@me:代表当前字段的原始值,也就是senddate的时间戳。
显示年-月-日 时:分 格式
这是一个非常常见的需求,"2025-08-15 14:30"。
[field:senddate function="strftime('%Y-%m-%d %H:%M',@me)"/]
解释:
'%Y-%m-%d %H:%M':格式化字符串,组合了日期和时间,中间用空格隔开。
显示12小时制的时间,并带 AM/PM 标识
下午2点30分显示为 "02:30 PM"。
[field:senddate function="strftime('%I:%M %p',@me)"/]
解释:
%I:12小时制的小时。%M:分钟。%p:显示 "AM" 或 "PM"。
显示星期几
显示文章发布当天是 "星期一"。
[field:senddate function="strftime('%A',@me)"/]
注意:如果你的网站是中文环境,但服务器环境不是中文,可能显示的是英文 "Monday",为了确保显示中文,可以使用下面的 MyDate 函数。
高级用法:使用 MyDate 函数
DedeCMS 还内置了一个更简单、更符合中文习惯的 MyDate 函数,它在处理中文日期格式时非常方便。
基本语法:
{MyDate('格式化字符串', 时间戳)}
MyDate 的格式化代码与 strftime 有些不同,但更直观。
MyDate 代码 |
说明 | 示例 |
|---|---|---|
Y |
四位年份 | 2025 |
m |
两位月份 | 08 |
d |
两位日期 | 15 |
H |
24小时制小时 | 14 |
i |
分钟 | 30 |
s |
秒数 | 05 |
A |
AM/PM (大写) | PM |
w |
数字星期 (0=周日, 1=周一, ... 6=周六) | 1 |
D / l |
星期几(D为缩写,l为全称,中文环境下显示中文) | 一 / 星期一 |
使用 MyDate 实现上面的场景
场景一(小时:分钟):
[field:senddate function='MyDate("H:i",@me)'/]
输出:14:30
场景二(年-月-日 时:分):
[field:senddate function='MyDate("Y-m-d H:i",@me)'/]
输出:2025-08-15 14:30
场景三(12小时制 AM/PM):
[field:senddate function='MyDate("h:i A",@me)'/]
输出:02:30 PM
场景四(显示星期几):
[field:senddate function='MyDate("l",@me)'/]
输出:星期一
总结与对比
| 需求 | strftime 写法 |
MyDate 写法 |
推荐度 |
|---|---|---|---|
| 小时:分钟 | strftime('%H:%M',@me) |
MyDate("H:i",@me) |
MyDate (更简洁) |
| 年-月-日 时:分 | strftime('%Y-%m-%d %H:%M',@me) |
MyDate("Y-m-d H:i",@me) |
MyDate (更简洁) |
| 带AM/PM | strftime('%I:%M %p',@me) |
MyDate("h:i A",@me) |
MyDate (更简洁) |
| 星期几 | strftime('%A',@me) (可能需服务器环境支持) |
MyDate("l",@me) (中文环境友好) |
MyDate (中文首选) |
| 复杂格式 | strftime 功能更强大,支持更多系统级格式 |
MyDate 功能相对固定 |
strftime |
对于绝大多数在 DedeCMS 中显示日期时间的场景,MyDate 函数是更简单、更推荐的选择,因为它语法更短,并且能很好地适应中文环境,只有在需要一些 MyDate 不支持的特定格式时,才考虑使用 strftime。
希望这个详细的解释能帮助你完美地解决 DedeCMS 中的日期时间显示问题!
