在函数中。php如果我添加date_default_timezone_set( get_option(\'timezone_string\') );
然后,$dt将正确输出,并带有;PST";。
是的,但是不更改PHP时区date_default_timezone_set()
(这个是hard 正确堆芯操作要求!)“S”https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/.
我不认为我需要显式设置时区,因为我已经在WordPress中设置好了
WordPress确实使用您在那里设置的内容,但WordPress没有将其设置为默认(PHP)时区。
WordPress主要在计算日期和时间时使用它(基于PHP timezone string 或±HH:MM偏移),因此,为了获得正确的计算,WordPress在加载WordPress时将默认时区设置为UTC(请参阅wp-settings.php
, 第68行)。
因此,您可以使用date_i18n()
要获得相同的“;PST“;如您所说,即根据您的站点设置,同一日期具有正确的时区。例如。
$value_from_db = \'2022-01-16 09:00:00\'; // value hard-coded for testing
// If the site\'s time zone is America/Los_Angeles, this would output 1/16/22 @ 9:00AM PST
echo date_i18n( \'n/j/y @ g:iA T\', strtotime( $value_from_db ) );
/* You\'d see the exact same output as when using:
date_default_timezone_set( \'America/Los_Angeles\' );
$dt = DateTime::createFromFormat( \'Y-m-d H:i:s\', $value_from_db );
echo $dt->format( \'n/j/y @ g:iA T\' ); // 1/16/22 @ 9:00AM PST
*/
或者您可以使用
wp_date()
, 但文件上说:“我不知道你是谁。”
注意,与date_i18n()
, 此函数接受真实的Unix时间戳,而不是与时区偏移量求和“;,也就是说,如果GMT偏移量为-8(比GMT/UTC晚8小时),则
wp_date()
将返回一个8小时的日期
less than 返回的日期
date_i18n()
.
$value_from_db = \'2022-01-16 09:00:00\'; // value hard-coded for testing
// If the site\'s time zone is America/Los_Angeles, this would output 1/16/22 @ 1:00AM PST
echo wp_date( \'n/j/y @ g:iA T\', strtotime( $value_from_db ) );
所以你应该使用
date_i18n()
或
wp_date()
根据您的具体要求。
您可能还对以下方面感兴趣:
wp_timezone()
— 从站点设置中将时区检索为DateTimeZone
对象,例如。wp_timezone()->getName()
可能会回来America/Los_Angeles
.wp_timezone_string()
— 从站点设置中以字符串形式检索时区,例如。America/Los_Angeles
或-08:00
.