这类问题我又碰上了一次。文章发布时间是 2026-11-15 00:30,结构化数据里写成 2026-11-15T00:30:00,没有时区。结果里显示的日期变成了 11-14,新闻源的时效判定也跟着偏了一天。

第一反应是「dateModified 早于 datePublished,被判定为数据异常」,验证下来不成立。

把日志和配置对完,能解释这个现象的基本就这几处。缺时区时按 UTC 解析,东八区的凌晨被减成前一天;页面可见时间与标记里的时间用了两个来源;时区写成 +8 而不是 +08:00,格式不合法。

第一件事是看页面上与标记里的时间

curl -s https://www.example.com/news/1024 | grep -o 'datePublished[^,]*'

补上标准时区偏移

"datePublished": "2026-11-15T00:30:00+08:00"

保证可见时间与标记一致

curl -s https://www.example.com/news/1024 | grep -o '<time[^>]*>'

校验整段 JSON-LD 可解析

python validate_schema.py https://www.example.com/news/1024 --type NewsArticle

怎么算真的好了,看的是同一批现象。结果里显示的日期与页面一致,新闻时效标记恢复正常,凌晨发布的稿件不再被算成前一天的内容。

这里还有个坑。时间字段一定带时区,服务器、数据库、模板三处时区不一致时,标记里的值要与页面上看到的完全一致。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189