PHPでdateやstrtotimeで取得した現在日時が9時間ずれているときは、
日本ではないタイムゾーンが設定されている可能性があります。
まず確認すべきは php.iniのdate.timezoneの設定です。
1 |
date.timezone = Asia/Tokyo |
になっていない場合は修正します。
もしレンタルサーバーなどの制限でphp.iniが編集できない場合は、コード上で
1 |
date_default_timezone_set('Asia/Tokyo'); |
でタイムゾーンを設定できます。
ほとんどの場合はこれで解決なのですが、
たまに、外部ライブラリを使用していると
上記のようにタイムゾーンを指定しているにも関わらず
時間のずれが直らない場合があります。
そんなときは、strtotimeでずれた分だけ時間をずらし返してやりましょう。
1 |
$now_date = date('Y-m-d H:i:s', strtotime('+9hour')); // 9時間遅れていたとき |
スマートではないかもしれませんが
こういう臨機応変な対応もときにはアリだと思います。