有几个选择,没有一个真正有效。这是一个WordPress bug,它真的很糟糕,因为时间不对,除非您将站点设置为UTC。。。这令人困惑,甚至不可能。
我认为,只有当您选择时区(在管理中的“设置->常规”下)作为命名城市而不是GMT数字偏移量时,下一个代码才有效。我还没有测试过,但很可能get_option(\'gmt_offset\')
设置时间get_option(\'timezone_string\')
不是。
date_default_timezone_set(get_option(\'timezone_string\'));
这样做的缺点是,WordPress在创建mysql时间戳时假设PHP设置为UTC,因此每当您切换时区时,您都可能会把数据库弄得一团糟!更不用说其他WP插件可能会假设PHP环境始终处于UTC。
因此,如果您只需要一个正确的时间,可以使用以下命令强制时间戳为UTC:
get_post_time(\'c\', true); //should work for non-post objects.
不幸的是,虽然正确,但它会将时区设置为UTC。
注意你不能both 使用“true”标志and 默认的timezone\\u set函数。
任何合适的解决方案都将是一段代码片段,可以解释这两者gmt_offset
和timezone_string
并使用它们在某些输入上设置时区。WP假设PHP在处理mysql时间戳时设置为UTC,这可能会破坏其他插件。
有一个这样的解决方案https://www.skyverge.com/blog/down-the-rabbit-hole-wordpress-and-timezones/ 但是,这也是一个BUG,因此您应该使用get_post_time($date_format, TRUE)
获取实际正确的时间戳的代码。