后台设置的时区是上海,前台文章日期却比实际发布时间早八小时,用 date 函数直接输出反而对得上。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

echo date_i18n('Y-m-d H:i', get_post_time('U', true));
wp option get timezone_string
date

日期函数会把时间戳按站点时区换算,普通的格式化函数用的是脚本默认时区,服务器跑在世界标准时间时两者差八小时,混用必然对不上。这一点先确认清楚,后面就不用反复试。

「date_i18n 时区」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,先确认后台常规设置里面的时区城市有没有选对;统一使用本地化的日期函数 并且传入标准时间戳;不要在同一份模板里面混用两套不同的日期函数。

改完照着核一遍,前台日期与后台的发布时间一致 更换服务器后也不再偏移。

作者 9823189