今回はタイムゾーンの取得についてご紹介します。
今日タイムゾーンの異変に気づいたのでそのままブログに載せておきます。
DateTime関数を自分なりにカスタマイズしておりまして、ちょっとテスト的に試してみたら、あれ?時間がおかしい、という状況になったので原因を調べておりました。
まあ、基本的にphp.iniのdate.timezoneがおかしいのはすぐに分かったのですがタイムゾーンの設定を調べられる方法ないかなと見ておりましたらありました。
スポンサーリンク
デフォルトのタイムゾーンの取得方法
date_default_timezone_get(); |
上記はdate_default_timezone_set()で設定したもの、なければTZ環境変数でなければphp.iniの値を取ってくるという順できます。それでもない場合はUTCを返します。
ini_get('date.timezone'); |
上記はphp.iniで設定した値を取ってきます。
date_default_timezone_set('Asia/Tokyo'); |
私は上記を設定してあれば大丈夫だと思っておりましたが、php.iniで設定していない場合は有効なのですが設定してある場合はそちらが優先されます。だからphp.iniと違うことも考えられますね。
因みにphp.iniで設定しなくてini_get(‘date.timezone’)で取得した場合は当然エラーになります。
xamppはデフォルトでEuropeが指定されていたため時刻がおかしいことになっていました。
1 2 3 4 5 6 7 8 9 10 | <?php $default_timezone = date_default_timezone_get(); $ini_timezone = ini_get('date.timezone'); if ($default_timezone !== $ini_timezone ){ echo 'デフォルトのタイムゾーンと異なっています。'; } else { echo 'デフォルトのタイムゾーンと同じです'; } ?> |
上記でチェックすれば自分で設定したタイムゾーンとphp.iniが同じかどうか調べられます。