getdateがグリニッジ標準時を取得するワードプレス

ワードプレスでPHP関数getdate()が正しく動かない!日本時間より9時間遅い。

getdateの挙動がおかしくグリニッジ標準時を取得してしまうワードプレスのタイムゾーンはもちろん日本。解決方法を調べたよ!
投稿日: 2013/01/05
最終更新日: 2015/12/29
 

あっどうも確認不足で慌てる者です。
今回は、ワードプレス限定で起きたgetdate()の挙動がおかしいというお話。
かぴぐらし・新年早々トラブルです。getdate()いう関数が動かないと憤慨しています。

getdate()の取得値がロンドン?

「新年あけましておめでとうございます!」とかいう表示を自動でやりたくてgetdate()を使いました。記述は簡単です。

//現在時刻を取得して代入
$today = getdate();
//明けたらメッセージ切替
if($today[year] == "2013"){
 echo '2012年だよ';
 }else{
 echo '新年あけましておめでとうございます!';
}

シンプルすぎて間違いなどありえない状態でした。
が・・・なぜか挙動がおかしい。

getdate()で取得した値は下記

(
    [seconds] => 42
    [minutes] => 32
    [hours] => 17
    [mday] => 1
    [wday] => 2
    [mon] => 1
    [year] => 2013
    [yday] => 0
    [weekday] => Tuesday
    [month] => January
    [0] => 1357061562
)

2013年1月1日0時0分に動作したgetdate()でしたが
9時間もズレているのです。

・・・9時間遅い。ロンドンかぁい!

結論!ワードプレスのファイルに直記述するとヤバい

結論は簡単でした。
ワードプレスのファイルに直接記述すると強制的に標準時(UTC)に設定されます。
予約投稿などの時刻は、ワードプレス内「設定」のタイムゾーンで設定されていますが直接記述になると話は別のようです。

困りますよね?

直接設定ファイルいじっちまいますよ(`・ω・´)ゞ

考えるの面倒臭い。強制的に設定してくるファイルの記述を書き換えます!
(自己責任でね☆)

date_default_timezone_set

ワードプレス内「wp-settings.php」の中にある「date_default_timezone_set(‘UTC’);」をコメントアウト!

これで日本時刻でgetdateを取得できるようになりました(`・ω・´)ゞ

参考:date_default_timezone_setとは

 
最新情報をお届けします
筆者のご紹介
角政典@moreiic
真性のお家大好きフリーランスです。プログラムよりご飯の方が断然好き!博多出身のデブデザイナー。インドアだけど遊んでくれる人募集中!
Twitter / google+
よく検索されてる記事