选择城市时时区错误(哥本哈根)

时间:2021-03-24 作者:Zeth

时区设置(在“Settings”(设置)“Generel”(常规)“timezone”(时区)”中)似乎被忽略。我已将其设置为“哥本哈根”(价值:Europe/Copenhagen).

但服务器时间仍比丹麦的实际时间提前1小时。

如果我只是在函数的顶部添加这些行,则调试。php文件:

$datetime = new DateTime();
$datetime_str = $datetime->format( \'Y-m-d H:i:s\' );
error_log( $datetime_str );
重新加载随机页面并转到我的错误日志,然后得到以下结果:

[24-Mar-2021 16:12:08 UTC] 2021-03-24 16:12:09
“UTC”?!嗯。。。

但如果添加,则将上面写的三行替换为:

date_default_timezone_set ( \'Europe/Copenhagen\' );
$datetime = new DateTime();
$datetime_str = $datetime->format( \'Y-m-d H:i:s\' );
error_log( $datetime_str );
然后输出:

[24-Mar-2021 17:12:13 Europe/Copenhagen] 2021-03-24 17:12:13
“欧洲/哥本哈根”->;是的。时间也很准确。

如果我尝试将其设置为其他值(如“UTC+8”),它仍然会显示:[24-Mar-2021 16:12:08 UTC] 2021-03-24 ... 在调试日志中。

注意事项可能在我的主题或插件中的某个地方。但是,仅仅为了调试这件小事,就开始停用所有插件并设置另一个主题,这似乎太过分了。

所以我的问题是:

将我的固定行保留在函数文件的顶部,这是否会对性能造成巨大影响:date_default_timezone_set ( \'Europe/Copenhagen\' );

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

  1. 。。。为什么时区设置为UTC,而不是我在WordPress设置页面中设置的值,WordPress会计算与UTC的偏移量,因此WordPress sets the default time zone to UTC 而不是您在设置中选择的特定时区→ 一般管理页面。

    将我的固定行保留在函数文件的顶部,这是否会对性能造成巨大影响:date_default_timezone_set ( \'Europe/Copenhagen\' );

也许这不是一个大时区,但即使如此,您也不应该更改默认时区。

因为如果您这样做,那么站点健康工具将报告以下(关键问题)(wp-admin → 工具→ 现场健康状况):

PHP默认时区在WordPress加载后由date_default_timezone_set() 函数调用。这会干扰日期和时间的正确计算。

但是,在某些情况下,您可以使用date_default_timezone_set(), 但在使用完代码后,应将默认时区恢复回UTC:

date_default_timezone_set ( \'Europe/Copenhagen\' );
$datetime = new DateTime();
$datetime_str = $datetime->format( \'Y-m-d H:i:s\' );
date_default_timezone_set( \'UTC\' ); // restore it to UTC
但是,WordPress提供了自己的日期/时间功能,可以应用通过管理设置页面设置的时区,例如:。wp_date() (或过去,date_i18n()), 因此,您可以简单地利用这些功能。例如。

// Display current time in MySQL format using wp_date():
$datetime_str = wp_date( \'Y-m-d H:i:s\' );

// Or you could just use current_time():
$datetime_str = current_time( \'mysql\' );