質問: new Date(); Calendar cal=Calendar.getInstance(); cal.setTime(dat); System.out.println(cal.getTime()); } 1. 本番環境:リリース済み(GMT:10月31日の22:00) クライアントの環境:日本時間11月1日の7:00 2. 開発環境 開発環境:クライアントと同一時 クライアントの環境:日本時間11月1日の7:00 上記1と2で出力される値がどう変化するか教えていただけませんでしょうか? 御手数ですが何卒よろしくお願いいたします。
回答: 開発環境は日本時間GMT+9がタイムゾーンとなっていて、本番環境はGMT+0、つまり世界標準時なのでしょう。だから9時間前の時刻に見える、というわけです。直したいのであればコードでTimeZoneクラスのデフォルトタイムゾーンを日本時間にしてしまうのが早いでしょう。 ``` TimeZone.setDefault(TimeZone.getTimeZone("GMT+9")); ``` `Date`型の数値自体はタイムゾーンの影響を受けませんが、`Date#toString`による出力はタイムゾーンの影響を受けるので注意が必要です。タイムゾーンの影響後の時刻等を取得するには`Calendar#get`等を使用する必要があります。 ※指摘によりDate型へタイムゾーンの影響のくだりを削除