这类问题我又碰上了一次。文章发布时间是 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
怎么算真的好了,看的是同一批现象。结果里显示的日期与页面一致,新闻时效标记恢复正常,凌晨发布的稿件不再被算成前一天的内容。
这里还有个坑。时间字段一定带时区,服务器、数据库、模板三处时区不一致时,标记里的值要与页面上看到的完全一致。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
