文章目录

今天维护客户网站的时候,突然想起来自己写的百度统计插件总会时不时出现无法更新数据的问题,就想着再好好检查一下。

将所有数据都打印出来以后,发现问题实际上是出在 strtotime 函数上。通过百度服务器获取到的时间是正确的,但是转换以后的时间戳多了8个小时出来。这明显就是时区问题了。

然而在terminal里 date 出来的时间也是对的,那么问题就极有可能是WordPress搞出来的了。我印象里 wpjam 的作者 Denis 有文章提到过他的插件有相应的转换功能。

经过简单的搜索,确实找到了文章。如果网站本身就用到了 wpjam basic 插件,那么只需要把 strtotime 替换为 wpjam_strtotime,所有问题都迎刃而解。这个函数做了这样一件事情:

1
2
3
function wpjam_strtotime($string){
return date_create($string, wp_timezone())->getTimestamp();
}

我突然又想到了另外一个问题,我的代码中还用到了 time()date() 函数,那它们的结果正确吗?

经过测试,我这里得到了正确结果。但是抱着怀疑的态度,我还是再次上网查询。结果网上的建议是不要使用PHP原生的 time()date() 函数,应该使用 current_time( 'timestamp' )wp_date() 。出于个人的谨慎,在反复确认结果无误以后,我把相关函数都换成了 current_time( 'timestamp' )wp_date() ,谨防出现新的问题。


♦ 本文固定连接:https://www.gsgundam.com/2023/11/2023-11-02-wordpress-timezone-offset/

♦ 转载请注明:GSGundam 2023年11月02日发布于 GSGUNDAM砍柴工

♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)

♦ 本文总阅读量