それぞれの環境でのタイムゾーンの設定方法です。
国内だけのサービスであればJSTにするケースもありますが、世界を狙うぜ!という場合にはUTCにしておいて、表示側で調整する、なんてことが重要になってきそうです。
ミドルウェアによってはOSのタイムゾーンの設定を見ることがあるので注意が必要です。
Docker
Dockerによりマシンを立ち上げるとUTCになっているので変更します。
$ docker exec -it webhost bash # date Wed Apr 19 02:30:45 UTC 2017
docker-compose.xml
環境変数としてTZを渡してあげるのが一番スマートです。
environment: TZ: "Asia/Tokyo"
PHP
date.timezoneをしていします。
/usr/local/etc/php/php.ini
[Date] date.timezone = "Asia/Tokyo"
設定の確認方法は
# php -i | grep timezone Default timezone => UTC date.timezone => no value => no value
CakePHP
config/bootstrap.php
この設定がどの範囲に影響するのかはまだ不明。。。
date_default_timezone_set('UTC'); ↓ date_default_timezone_set('Asia/Tokyo');
config/app.php
DB接続時のタイムゾーンの設定です。
'Datasources' => [ 'default' => [ 'timezone' => 'Asia/Tokyo', ], ],
MySQL
MySQLはOSのタイムゾーンを変更するとその変更に影響を受けるようです。
/etc/mysql/conf.d/my.cnf
[mysqld] default-time-zone = 'Asia/Tokyo' [mysqld_safe] timezone = 'Asia/Tokyo'
設定状況の確認方法は
mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec)