web-dev-qa-db-ja.com

PHP WordPressで間違った時間を表示する機能

XAMPPへの私のローカルWordPressインストールは間違った時間設定をしているようです。私がする時

date( 'Y-m-d H:i:s' );

結果として 2017-02-21 10:46:43 となります。しかし、私のPCの時間は本当に 2017-02-21 11:46:43 なので、私のWordPressは1時間遅れています。

さて、私はすでにやったことですが、 こちら php.ini date.timezone を私のタイムゾーンに変更し、その後Apacheを再起動しました。 XAMPPによって引き起こされる。しかしそれでも私は間違った時間が表示されます。

私はまたWordPressで settings - > general に行き、そこにあるタイムゾーンを正しいものに変更しました。そこに示されている現地時間は正しいです:

"現地時間は2017-02-21 11:46:43"

しかし、私がこの機能を使うとき、それはまだ間違っています。何か問題はありますか、他に何がこの問題を引き起こす可能性がありますか?

3
MattWithAHat

date()は、サーバーの設定に応じてPHP関数です。 WordPress関数を使ってそれを回避することができます。

current_time( 'Y-m-d H:i:s' );

この関数はwp-adminの設定を考慮に入れます。

5
fischi

wordPressの設定とタイムゾーン(the_timethe_dateなど)に従って時間を取得するには、ワードプレス関数を使用します。

 the_date('F j, Y');
 the_time('g:i a');
2
Anwer AR

Wordpressはすべての日付をUTCとして保存するためにphp Timezoneをオーバーライドしているようです。しかし、彼らはそれを現地時間に変換する際に悪い仕事もします。

同じ問題にぶつかり、いくつかのテストを行って解決策を見つけました。

第一に、これはPHPタイムゾーンの問題ではありません。これを確認するために、test.phpをテーマフォルダーに入れて直接開きました(/wp-content/themes/theme/test.php)

このファイルでdate()関数を使用すると、時刻は正しいです。

しかし、この行を例えば私のテーマhome.php

print date('Y-m-d H:i:s');
print current_time('Y-m-d H:i:s');

ホームページにアクセスすると、間違った時間になります。

date()はUTCを返し、current_time()は正しいタイムゾーンの時刻を返しますが、DSTが含まれていないため、まだ1時間ずれています。

私がやったことはこれです:

$row = $wpdb->get_row( "SELECT CURRENT_TIMESTAMP() AS timestamp", ARRAY_A);
$timestamp = $row['timestamp'];

データベースにタイムゾーンに適した構成がある場合は、データベースにタイムスタンプを要求できます。

ただし、これにはいくつかの欠点もあります。データベースに適切なタイムゾーンがあり、データベースへのクエリを常に実行する場合にのみ機能しますので、過度に使用しないでください。

0
ender.center