teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2017/11/13 00:58

投稿

masaya_ohashi
masaya_ohashi

スコア9210

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