在织梦CMS的自定义表单中,时间处理主要涉及以下几个方面:

- 后台列表显示时间:如何让提交的记录在后台管理列表中正确显示时间。
- 前台表单提交时间:如何让用户在前台提交表单时,自动记录当前时间。
- 时间格式修改:如何自定义你想要的时间显示格式。
- 按时间筛选:如何在后台按时间范围来查找和筛选表单数据。
后台列表显示时间
默认情况下,织梦自定义表单在后台管理列表中会显示一个 dtime 字段,这个字段就是记录提交的时间,它存储的是 Unix 时间戳。
如何修改后台列表显示的时间格式?
织梦后台提供了一个非常方便的修改入口。
-
登录织梦CMS后台。
(图片来源网络,侵删) -
进入【核心】 -> 【内容模型管理】。
-
在页面底部,你会看到一个“自定义表单管理”区域,点击你想要修改的那个自定义表单的“管理字段”按钮。
-
在字段管理列表中,找到名为
dtime的字段,点击它后面的“更改”按钮。 -
在弹出的字段编辑页面中,你可以修改它的“名称”(比如改成“提交时间”)和最重要的“后台列表样式”。
(图片来源网络,侵删) -
默认的列表样式是
strftime('%Y-%m-%d %H:%M:%S',@me),这里使用的是strftime函数来格式化时间戳@me。%Y-%m-%d %H:%M:%S表示年-月-日 时:分:秒。- 你可以根据需要修改这个格式,
strftime('%Y年%m月%d日 %H时',@me)-> 显示为2025年10月27日 14时strftime('%m-%d',@me)-> 只显示月-日
-
修改完毕后,点击“保存”即可,回到自定义表单列表页刷新,时间格式就已经更新了。
前台表单提交时间(自动记录)
我们不希望用户手动填写提交时间,而是由系统自动记录,织梦默认就是这样做的。
实现原理:
当你创建一个自定义表单,并在前台调用 {dede:form} 标签时,织梦会自动在表单提交的SQL语句中添加两个字段:
dtime: 记录当前时间的 Unix 时间戳。ip: 记录提交用户的IP地址。
你不需要在前台表单里手动添加 <input type="text" name="dtime"> 这样的输入框,系统会自动处理。
如果你想在后台看到用户的IP地址:
和修改时间显示类似,在【核心】->【内容模型管理】->“自定义表单管理”->“管理字段”中,找到 ip 字段,修改它的“后台列表样式”,例如改成 @me 即可。
时间格式修改详解(strftime 函数)
这是最核心的部分。strftime 是一个强大的时间格式化函数,下面是常用的格式化字符:
| 格式符 | 说明 | 示例 |
|---|---|---|
%Y |
4位数字的年份 | 2025 |
%y |
2位数字的年份 | 23 |
%m |
2位数字的月份 (01-12) | 10 |
%B |
月份的完整名称 (January - December) | October |
%d |
2位数字的日期 (01-31) | 27 |
%a |
星期几的缩写 (Sun - Sat) | Fri |
%A |
星期几的完整名称 (Sunday - Saturday) | Friday |
%H |
24小时制的小时 (00-23) | 14 |
%I |
12小时制的小时 (01-12) | 02 |
%M |
分钟 (00-59) | 30 |
%S |
秒 (00-59) | 05 |
%p |
AM 或 PM | PM |
| 输出一个百分号 |
组合示例:
strftime('%Y-%m-%d %H:%M:%S', @me)->2025-10-27 14:30:05strftime('%Y年%m月%d日 %H时%M分', @me)->2025年10月27日 14时30分strftime('%m/%d %a', @me)->10/27 Fri
按时间筛选数据
在自定义表单的后台管理页面,织梦默认提供了按时间筛选的功能。
-
进入你的自定义表单管理页面(【核心】->【自定义表单】)。
-
在列表页面的顶部,你会看到筛选条件。
-
默认会有“关键字”搜索框,以及一个“时间筛选”的下拉菜单。
-
点击“时间筛选”,你可以选择:
- 今天
- 昨天
- 近7天
- 近30天
- 本月
- 上月
- 自定义时间范围
-
选择“自定义时间范围”后,会出现开始日期和结束日期的输入框,你可以选择具体的时间段来精确查找数据。
如果需要更复杂的时间筛选功能(比如只显示某个特定时间之后的记录),可能需要修改PHP文件,但这属于二次开发范畴,不建议普通用户轻易尝试。
总结与常见问题
| 场景 | 解决方案 |
|---|---|
| 我想让后台显示“年-月-日” | 模型管理】->【自定义表单管理】->【管理字段】,修改 dtime 字段的“后台列表样式”为 strftime('%Y-%m-%d', @me)。 |
| 我想让用户在前台提交时自动记录时间 | 什么都不用做! 织梦会自动记录,不要在前台表单里加 name="dtime" 的输入框。 |
| 我想按小时来显示时间 | 修改 dtime 字段的列表样式为 strftime('%Y-%m-%d %H时', @me)。 |
| 我想查找昨天提交的所有记录 | 在后台管理页面,使用“时间筛选”功能,选择“昨天”。 |
| 前台提交的时间不显示/显示为乱码 | 99%的情况是 字符集问题,请确保你的网站数据库、页面、表单提交的字符集都是 UTF-8,检查后台系统设置-核心设置里的“发布选项”是否为UTF-8。 |
通过以上步骤,你应该能完全掌控织梦CMS自定义表单中的时间管理了。
