Products
96SEO 2025-09-17 11:47 1
dedecms在自定义表单中, 时间字段经常会遇到一个典型问题:提交后的时间数据在后台显示为一串“数字”,其实吧是一个时间戳。这对于初学者来说非常困惑,主要原因是期望看到的是格式化的日期时间字符串,而非毫无意义的数字。
本文将从根源解析该现象, 结合实际案例和代码示例,详细讲解如何通过钩子技巧解决dedecms自定义表单时间字段显示数字的问题,实现前后台都能正常、友好地显示时间。
我们先理解为什么出现这个“数字”:
这是主要原因是存储与展示逻辑未匹配导致的问题。解决思路就是在读取和展示数据时将时间戳转换回标准日期格式即可。
这样的配置告诉系统,该字段类型是datetime
,提交后会以数字形式存储。
dedecms自定义表单通常有两个重要模板文件需要关注:
- /dede/templets/diy_*.htm
: 自定义表单的前台展示模板
- /dede/templets/list_*.htm
: 自定义表单数据列表页模板
问题核心:
diy_*.htm 或 list_*.htm 中对数据读取后直接输出了原始值,没有进行格式化;需手动添加格式化函数。
dedecms里常用函数GetDateTimeMk可将Unix时间戳转换为“Y-m-d H:i:s”格式字符串。
// 在对应的PHP调用文件或钩子代码中添加以下判断:
if {
$fields = GetDateTimeMk;
}
说明:
同理, 前台页面也需要把保存好的数字转换成人类可读的日期格式再输出,否则用户看到仍然是一串难懂的数字。
{php}
$timeValue = $field; // 获取数据库中的原始timestamp
echo date);
{/php}
{dede:global.cfg_webname /}
{dede:getdate timestamp=$addtime fmt='Y-m-d H:i:s' /}
Demand feedback