質問: date_default_timezone_set( 'Europe/Athens' ); date_default_timezone_set( 'Africa/Juba' ); date_default_timezone_set( 'America/Chicago' ); date_default_timezone_set( 'Asia/Tokyo' ); 上記は問題なく正しい日付がとれるのに対して date_default_timezone_set( 'UTC' );だけ、日本語同じ日付になってしまいます。 OSは EC2 centos7 です。 原因がわかる方はぜひ、教えて頂ければと思います。 ``` ``` ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/6535096a2b965a409b9503d0108f6350.png)
回答: UTC といいながら実は JST(+0900) になっている、というタイムゾーンの定義がそもそもおかしいようです。 私が試した環境(CentOS7)だと、UTC の定義ファイル(/usr/share/zoneinfo/UTC) は以下のようになっています。(hexdump -C UTC で出力) | アドレス | hexdump | ASCII | | --- | --- | --- | | 00000000 | 54 5a 69 66 32 00 00 00 00 00 00 00 00 00 00 00 | TZif2........... | | 00000010 | 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 | ................ | | 00000020 | 00 00 00 00 00 00 00 01 00 00 00 04 00 00 00 00 | ................ | | 00000030 | 00 00 55 54 43 00 00 00 54 5a 69 66 32 00 00 00 | ..UTC...TZif2... | | 00000040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 | ................ | | 00000050 | 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 | ................ | | 00000060 | 00 00 00 04 00 00 00 00 00 00 55 54 43 00 00 00 | ..........UTC... | | 00000070 | 0a 55 54 43 30 0a | .UTC0. |