You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 7 无法显示存储为Unix时间戳格式的1970年前日期

问题根因

你当前使用的Date (unix timestamp)字段类型是导致1970年前日期无法显示的核心原因:
Unix时间戳以1970年1月1日0点UTC为起始零点,早于这个时间的日期会被转换为负时间戳,而Drupal核心旧版本、部分自定义格式化逻辑默认不支持负时间戳的解析渲染,哪怕数据库存储正常,前端输出时也会被过滤为空。
数据库日期存储正常截图
前端日期显示为空截图
你当前的字段配置见下图:
Date (unix timestamp)字段配置截图

解决方案

  • 更换字段存储类型
    把现有Date (unix timestamp)字段替换为Date (Date and Time)类型,该类型底层使用datetime格式存储,不依赖Unix时间戳规则,支持公元前1年到公元9999年的全时段日期,完全规避时间戳的边界限制。你可以通过Drupal核心的字段迁移工具批量迁移已有的存量日期数据,无需手动录入。
  • 调整日期格式化规则
    进入后台「配置 > 区域和语言 > 日期和时间格式」,检查你正在使用的日期输出格式,避免使用依赖Unix时间戳的自定义格式化代码,优先选择Drupal原生提供的datetime格式化器输出日期。
  • 排查自定义逻辑冲突
    如果你在主题模板、自定义模块中写了字段预处理钩子(比如hook_preprocess_field),检查是否存在「只有时间戳大于0才输出」的过滤逻辑,这类逻辑会直接拦截1970年前日期对应的负时间戳,导致输出为空。

内容的提问来源于stack exchange,提问作者Xenetrix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:45:02