这个坑值得记一笔。招聘频道的模板把月份加了 1 却忘了处理 12 月,生成的 validThrough 出现 2026-13-01。结构化数据测试报「无效日期」,这批岗位在搜索结果里完全没有富媒体展示。

刚开始盯着「测试工具的报错被当成偶发,没有回查数据源」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。日期拼接用字符串相加,跨年时月份溢出;没有做 ISO 8601 校验,非法值被原样输出;月份拼接用字符串加一 跨年时还会出现 00 月。

第一件事是抓一段线上 JSON-LD 看日期

curl -s https://www.example.com/job/1 | grep -o '"validThrough":"[^"]*"'

然后改用时区安全的日期格式化

$d = (new DateTime('+1 month'))->format('c');

批量校验所有岗位的日期字段

python -c "import json,datetime;[datetime.datetime.fromisoformat(j['validThrough']) for j in json.load(open('jobs.json'))]"

末了重新提交并看富媒体报道

curl -s https://www.example.com/job/1 | grep -c 'JobPosting'

别只看报错消失,验证要多做一步。修正日期生成后,测试工具不再报错,十天内岗位富媒体在搜索结果里恢复展示,申请点击量回到正常水平。

有效期字段留空表示长期有效,比填一个算错的日期安全,跨年边界记得单独跑一次测试。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189