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"
しかし、私がこの機能を使うとき、それはまだ間違っています。何か問題はありますか、他に何がこの問題を引き起こす可能性がありますか?
date()
は、サーバーの設定に応じてPHP
関数です。 WordPress関数を使ってそれを回避することができます。
current_time( 'Y-m-d H:i:s' );
この関数はwp-admin
の設定を考慮に入れます。
wordPressの設定とタイムゾーン(the_time
やthe_date
など)に従って時間を取得するには、ワードプレス関数を使用します。
the_date('F j, Y');
the_time('g:i a');
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'];
データベースにタイムゾーンに適した構成がある場合は、データベースにタイムスタンプを要求できます。
ただし、これにはいくつかの欠点もあります。データベースに適切なタイムゾーンがあり、データベースへのクエリを常に実行する場合にのみ機能しますので、過度に使用しないでください。