- - PR -
GMT時間とJST-9時間について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-02-08 14:53
はじめまして。
Java2SE1.4.2 & Win2KSP4でコーディングしています。 当方Javaを始めたばかりでノウハウがなく、ご教授お願いします。 GMT時間で定義されている"031201030030Z"という文字列があった場合 (2003年12月1日3時0分30秒)、この時間をJST-9時間に変換する場合どのように すればよいのでしょうか? int型変数nYear,nMonth,nDay,nHour,nMin,nSecにそれぞれ上記文字列から データを切り出して、 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); cal.clear(); cal.set(nYear, (nMonth - 1), nDay, nHour, nMin, nSec); としてCalendarクラスオブジェクトを構築します。 この後 Date da = cal.getDate(); としてDateクラスオブジェクトを構築してDateクラスのgetHours()などの メソッドを呼び出せば自動的にJST-9の時間を取り出せると思ったのですが、 getHours()は推奨されていないメソッドのようなので、 int nYear2 = cal.get(Calendar.YEAR); にて日付の各要素を取り出そうと思いました。 が、これだと取り出される値は内部プロパティ値であり、"GMT"のままです。 そこで、 cal.add(Calendar.HOUR, 9); // JPT-9なので9時間進める を実行して無理やり9時間進めてみると上手くいくのですが、 このようにGMTからJST-9の時間を取り出す場合、普通どのようにするものでしょうか? | ||||
|
投稿日時: 2005-02-08 15:32
こんなんでどうでしょう。
| ||||
|
投稿日時: 2005-02-08 16:02
こんにちは、さくらばです。
DateFormat を使うのがいいと思います。Date/Calendar が作れれば 後は Edosson さんが仰られるように、TimeZoneを切り替えればいい だけですから。 こんな感じです。
| ||||
|
投稿日時: 2005-02-08 16:04
Edossonさん、返答ありがとうございます。
ご教授いただいた通り、TimeZoneを"Asia/Tokyo"に変更して 実行してみますと、確かにGMT→JST-9に変換されました。 自分でcal.set()した時間でも問題ありませんでした。 しかし、上記をDOS上で実行した場合問題は起きないのですが、 申し送れましたが、Eclipse3.0上で開発しており、Eclipse上だと GMTに対して+9時間が上手く働く時と働かない時があります。 この原因がわかりません。 | ||||
|
投稿日時: 2005-02-08 16:24
さくらばさん、返答ありがとうございます。
ご教授いただいた方法で上手く動作します。 任意の時間を指定したCalendarオブジェクトを作成する際は、 cal.set()では上手くいかないケースがありうるのでしょうか。。 (当方のコーディングミスという可能性もありますが) 今回はさくらばさんに教えていただいた方法でCalendarオブジェクトを 構築し、御二人に教えていただいたとおりTimeZoneを切り替えて対応します。 ありがとうございました。 | ||||
|
投稿日時: 2005-02-08 16:30
考えられることといえば、TimeZoneを変更しているわけですから、
set()でパラメータを変更する場合、TimeZoneに応じた値を与えなければなりません。 GMTで生成したCalendarインスタンスのTimeZoneを東京に変更したからといって、 GMTの時刻を与えたら、東京の時刻に変更してくれる訳じゃないです。 ってところでしょうか。
両者がまったく同一である、と断言するのは、注意が必要ですよ。 考慮の上であれば、ご容赦ください。 | ||||
|
投稿日時: 2005-02-08 17:19
Edossonさん、解説ありがとうございます。
どうも私は根本的に理解不十分でした。。 >両者がまったく同一である、と断言するのは、注意が必要ですよ。 >考慮の上であれば、ご容赦ください。 いえ、まったく考慮できていませんでした。。お恥ずかしい限りです。 勉強になりました。ありがとうございます。 | ||||
|
投稿日時: 2005-02-08 18:20
こんにちは、さくらばです。
単に面倒くさいからという理由です... ![]() 記述量が多くなれば、それだけミスが起こりやすいですし、 すでにライブラリで同様の機能が提供されているのであれば それを使ったほうが手っ取り早いですから。 |
1