Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Date型のJST時間をGMT時間に変更出来ない

初めて書き込ませて頂きます。
ここ3日ほど色々調査してみたのですが、
結局解決出来なかったので質問させて下さい。。。

やりたいことは、
JST時間をGMT時間にするという事なのですが。。。

コードです。
//共通関数
static private DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");

//ロジック
value="";
Date dt = new Date();
Date dt2 = null;
DateFormat df = DateFormat.getDateTimeInstance();
TimeZone tz;
tz = TimeZone.getTimeZone("GMT");
df.setTimeZone(tz);
value = df.format(dt);
dt2 = dateFormat.parse(value);

DateFormatのインスタンスを作成し、
GMTタイムゾーンを取得し、
作成したインスタンスにセットして、
DateFormatのformatメソッドを使用すると、
valueには確かにGMT時間が取得されているのですが、
これをDate型に戻したとき
Wed Sep 13 10:14:39 JST 2006
のように何故かJST時間に戻ってしまい、
どうやればいいのかがもうわからなくなってしまいました。。。

過去に同じ質問があったら大変お恥ずかしいのですが、出来ればご教授いただけると幸いです。

因みにローカルで動かしていて、
当然なのですが、PCタイムゾーンは
(GMT+9:00)大阪、札幌、東京
です。

3

回答

81217

閲覧

3件の回答

評価

0

dt2を取り出すときにも、それが必要とされるときにdf.format()を通せばいいんじゃないでしょうか。

APIリファレンスのjava.util.Dateを,或いはva.text.DateFormatも見てみればよいのではないかと。
Dateの中でJSTとかGMTとかとして持っているのではないですよ。

評価

0

Dateは基本的に、ローカル時間で考えます。
タイムゾーン自体を意識していたいのなら、Calendarのほうがいいのでは。

評価

0

早速のご回答有難うございます。

>Dateの中でJSTとかGMTとかとして持っているのではないですよ

そうだったのですか。。。
オブジェクトの中には存在していたけれど、
それを参照・設定するようなメソッドがないので
おかしいなぁとは思っていたのですが・・・

教えていただいたリファレンスをもう一度読み返してみます。

有難うございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。