(无需担心,请按照上面更好的答案进行操作。Please do NOT edit this answer. 它作为参考存在。)
大多数WordPress主题和插件(尤其是受尊敬的开发人员开发的主题和插件)都使用c
常量,它以与此相同的格式输出时间戳:2012-06-14T10:32:11-00:00
.
例如,<?php get_the_date( \'c\' ) ?>
将输出如下内容2012-06-14T10:32:11-00:00
.
起初,我认为这是他们所有人的轻率决定,但后来我了解到这是一种时间戳格式recommended by the World Wide Web Consortium, 并且有自己预定义的日期常量DATE_W3C
. 没有问题了,句号。
WordPress中的问题例如WordPress Dashboard > Settings > General 我设置了Timezone 到New York.
现在,这个代码<?php get_the_date( \'c\' ) ?>
在模板中(如上所述的主题或插件)将输出如下内容:2012-06-14T10:32:11-00:00
看到错误了吗?是的,什么时候应该这样2012-06-14T10:32:11
-04:00
WordPress输出此2012-06-14T10:32:11
-00:00
即使核心WordPress开发人员开发的主题和插件也是如此。
日期和时间绝对正确,与时区相对应America/New_York
. 但时区偏移量,即与GMT/UTC的差值is NOT. 这不是个小问题,时间不对!
解决方案首先,我更改了get_the_date( \'c\' );
和get_the_modified_date( \'c\' );
到get_the_date( \'Y-m-d\\TH:i:sP\' );
和get_the_modified_date( \'Y-m-d\\TH:i:sP\' );
这似乎解决了问题(即显示正确的偏移量)。
真正的问题是当我意识到我必须对我使用的几个插件进行这些更改时(是的,它们输出时间戳Facebook plugin\'s 例如,打开图形功能)。这是不可行的。所以,我开始寻找替代品。
感谢examples in the PHP Manual functions reference for Date/Time, 我意识到我可能会在函数中用类似的东西覆盖WordPress的时区设置。php(在第一个<?php
):
date_default_timezone_set(\'America/New_York\');
瞧!
get_the_date( \'c\' );
和
get_the_modified_date( \'c\' );
现在开始显示正确的日期、时间和时区偏移!一次改变就可以统治所有人!
其他链接
List of Supported Timezones in PHP
WordPress Codex: Formatting Date and Time