96SEO 2025-10-02 11:21 1
DEDECMS作为国内广泛使用的内容管理系统,因其灵活性和 性深受用户喜爱。但在使用过程中,很多站长会遇到一个常见问题:文章发布时间显示为“1970年1月1日”。这不仅影响网站的专业形象,也干扰了搜索引擎对内容时效性的判断。
本文将从根源剖析这个问题产生的原因, 并结合实战经验,提供多种可操作的解决方案,帮助你轻松解决DEDECMS中“1970年1月1日”发布时间错误的问题。
Unix时间戳起点是1970年1月1日零点零分零秒。当程序或数据库中的时间字段读取不到有效值时 会默认返回“0”,即对应的Unix时间戳,从而显示为“1970-01-01”。
DEDECMS出现该问题,通常与以下几个因素有关:
字段名 | 含义 | 作用说明 |
---|---|---|
sortrank | 排序时间 | 前台调用最新文章排序依据, 一般与发送时间相同,可用于首页及列表排序。 |
senddate | 入库时间 | 记录文章录入数据库的实际时间,不会随修改变动。 |
pubdate | 发布时间 | 前台展示的发布时间, 可以被手动修改,也决定搜索引擎抓取日期。 |
若这三个字段存储了错误值, 比如都是“0”,则系统无法正常识别正确日期,从而导致显示1970-01-01。
⚠️操作之前, 请务必先备份整个网站数据库,以防止误操作造成数据丢失!⚠️
- 登录phpMyAdmin或使用其他数据库管理工具, 施行以下SQL语句查看dede_archives表中pubdate为“0”的文章数量:
SELECT id, title, pubdate, senddate, sortrank FROM dede_archives WHERE pubdate = 0 OR pubdate IS NULL;
- 如果查询后来啊非空,说明存在无效发布日期,需要批量修复。否则请继续排查模板或程序逻辑问题。
DedeCMS中建议保持sortrank、senddate和pubdate三个字段数值一致性。特别是当采集内容导致某些字段缺失时我们可以用已有的有效时间覆盖无效项。这里以将所有无效日期替换为当前服务器时间为例:
-- 设置变量为当前Unix 时间戳 SET @current_time = UNIX_TIMESTAMP; -- 批量更新dede_archives表 UPDATE dede_archives SET pubdate = @current_time, senddate = @current_time, sortrank = @current_time WHERE pubdate = 0 OR pubdate IS NULL;
- 施行后所有原本显示1970年的文章都会被赋予当前系统时间,即可恢复正常显示。
DedeCMS默认编辑页面article_edit.php中,部分版本可能没有正确处理输入为空或格式错误的发布时代码。建议按以下方式调整保存逻辑, 确保用户手动更改或者自动生成的日期均有效:
// 示例PHP代码片段 $pubtime = isset ? strtotime : time; if{ $pubtime = time; // 如果转换失败,则设置当前服务器时间 } // 写入数据库时候使用$pubtime作为发布时间 $query = "UPDATE dede_archives SET pubdate='$pubtime' WHERE id='$aid'"; // 施行更新...
- 此举可避免空字符串或非法格式传入导致存储错误,引发前端显示异常日期的问题。
UPDATE dede_archives SET pubdate=senddate, sortrank=senddate WHERE pubdate=0 OR pubdate IS NULL;通过此操作将发布时间统一设定为录入时间,实现合理展示。 还有啊建议在火车头采集模块配置里增加发布日期抓取规则,避免类似情况 发生。 小提示: 做好备份,并测试单条数据效果后再批量施行。
$publishTimeInput = $_POST ?? ''; $publishTimestamp = strtotime; if { $publishTimestamp = time; // 默认当前服务器系统时间 } // 用$publishTimestamp去写入数据库 $query_update_pubDate = "UPDATE dede_archives SET pubdate='$publishTimestamp' WHERE id='$aid'"; mysql_query; // 确保程序不写入无效值通过此校验防止空白输入被误保存,从根源杜绝这类现象 发生。
{dtime}
. 一些老旧模板直接输出数字形式Unix timestamp也会造成混乱,应做格式化处理。 DedeCMS显示发表日期错乱特别是退回到Unix纪元起点,本质上是由于系统读取到无效或空白的Unix Timestamp所致。这种情况在大量自动化导入内容以及部分编辑环节存在漏洞的软件版本尤为常见。通过本文介绍的方法, 你可以做到以下几点保障网站稳定运行且SEO友好:
Demand feedback