回答編集履歴

1

Dateにはタイムゾーンが直接影響はしないので修正

2017/11/13 00:58

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -1,21 +1,17 @@
1
- `Date dat = new Date();`で得られる時刻は「そのパソコンに設定されたタイムゾーンの現在時刻」です。開発環境は日本時間GMT+9がタイムゾーンとなっていて、本番環境はGMT+0、つまり世界標準時なのでしょう。だから9時間前の時刻に見える、というわけです。直したいのであればコードでTimeZoneクラスのデフォルトタイムゾーンを日本時間にしてしまうのが早いでしょう。
1
+ 開発環境は日本時間GMT+9がタイムゾーンとなっていて、本番環境はGMT+0、つまり世界標準時なのでしょう。だから9時間前の時刻に見える、というわけです。直したいのであればコードでTimeZoneクラスのデフォルトタイムゾーンを日本時間にしてしまうのが早いでしょう。
2
2
 
3
3
 
4
4
 
5
5
  ```Java
6
6
 
7
- public static void main(String[] args) {
8
-
9
- TimeZone.setDefault(TimeZone.getTimeZone("GMT+9"));
7
+ TimeZone.setDefault(TimeZone.getTimeZone("GMT+9"));
10
-
11
- Date dat = new Date();
12
-
13
- Calendar cal=Calendar.getInstance();
14
-
15
- cal.setTime(dat);
16
-
17
- System.out.println(cal.getTime());
18
-
19
- }
20
8
 
21
9
  ```
10
+
11
+
12
+
13
+ `Date`型の数値自体はタイムゾーンの影響を受けませんが、`Date#toString`による出力はタイムゾーンの影響を受けるので注意が必要です。タイムゾーンの影響後の時刻等を取得するには`Calendar#get`等を使用する必要があります。
14
+
15
+
16
+
17
+ ※指摘によりDate型へタイムゾーンの影響のくだりを削除