这个坑值得记一笔。技术站文章发布时间存 UTC,datePublished 直接输出 2026-11-10T16:30:00Z,对应北京时间 11 月 11 日 00:30,搜索结果里全显示成前一天,读者以为在补旧文。
刚开始盯着「列表页显示本地时间,详情页显示 UTC,两处对不上」,折腾了半个多小时,排掉了。
把日志和配置对完,能解释这个现象的基本就这几处。数据库存 UTC,模板没做时区转换就输出;datePublished 带了 Z 后缀,蜘蛛按 UTC 解析;结构化数据与页面可见时间不一致,被判信息冲突。
动手时先对比页面可见时间和结构化数据
curl -s https://www.example.com/post/1 | grep -o 'datePublished[^,]*'
然后在模板里转成东八区
echo date_i18n('c', strtotime(get_the_date('c')));
接着确认页面显示与标记一致
curl -s https://www.example.com/post/1 | grep -o '<time[^>]*>'
等前面都确认过,再抽查最新五篇的日期
curl -s https://www.example.com/sitemap.xml | grep -o '<lastmod>[^<]*' | head -5
改完先别撤,确认这几项。详情页时间与列表页一致,datePublished 带 +08:00 偏移,富媒体报告不再提示日期不一致。
带时区偏移比带 Z 更不容易出错,站点只服务一个时区时直接写 +08:00 最省事。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
