• 締切済み

Javaのタイムゾーン設定

お世話になります。 現在Javaで動いているアプリがありまして、 日付の処理で異常がありました。 どうやらOSの日付よりも-9時間のようです。 グリニッジくさいと思ったので、 OSの設定を見たところ、OS側は GMT+9:00 の東京になっていました。 Javaでjava.util.TimeZoneを使って調べたところ、 GMT グリニッジ標準時 オフセット0となりました。 どうやらJava側のタイムゾーンだけずれているようなのですが、 Javaのタイムゾーンを変更する方法はあるのでしょうか?

  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

  • jyugemu55
  • ベストアンサー率68% (11/16)
回答No.2

Windows VISTA の上で JRE1.4.X を使って動作させたときにそうなったことがあります。 VISTA 上では、1.5.X を使用しても9時間ずれるのではないでしょうか? もし、お使いのOS が VISTA で JRE のバージョンが 1.5 以前であるならば、 最新バージョンの JRE を使用すれば問題なく動作すると思います。

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

どうも、言ってることの全体と細部がよく分からないので、モンダイのプログラム(のミニ・バージョン)を投稿してみてください。

関連するQ&A

  • GMT時刻を任意のタイムゾーン時刻への変換方法

    Date型のGMT時刻をOSで設定したタイムゾーンに応じたローカル時刻に変換してくれる ことを期待して下記サンプル(SimpleDateFormatにTimeZoneを設定)を作成しました。 しかし、変換前後で時刻は変わりませんでした。 GMT時刻=2010/06/13 09:15:30 を作成。OSのタイムゾーンを日本に設定し、変換。 変換後の時刻は9時間後の2010/06/13 18:15:30を期待したのですが変換前後で変化は ありませんでした。下記がそのサンプルなのですが何か問題がありますでしょうか。 また、サンプルではOSからタイムゾーンを取得しているのですがブラウザのタイムゾーンを 取得することはできるのでしょうか。HTTP request headersにはタイムゾーン情報は無く JavaScriptを経由してとらないといけないという記述をどこかで見たことはあるのですが・・・。 【サンプル】 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeZoneTest { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2010); cal.set(Calendar.MONTH, 5); cal.set(Calendar.DAY_OF_MONTH, 13); cal.set(Calendar.HOUR_OF_DAY, 9); cal.set(Calendar.MINUTE, 15); cal.set(Calendar.SECOND, 30); Date todayDate = cal.getTime(); System.out.println("GMT時刻=" + formatter.format(todayDate).toUpperCase()); // GMT時刻=2010/06/13 09:15:30 String convertDate =convertTime(todayDate); // OSのTimeZoneId=Asia/Tokyo にて変換 System.out.println("ローカル時刻=" + convertDate); // ローカル時刻=2010/06/13 09:15:30 何故??? } public static String convertTime(Date todayDate) { String timeZoneId = TimeZone.getDefault().getID(); System.out.println("OSのTimeZoneId=" + timeZoneId); // OSのTimeZoneId=Asia/Tokyo formatter.setTimeZone(TimeZone.getTimeZone(timeZoneId)); return formatter.format(todayDate).toUpperCase(); } }

    • ベストアンサー
    • Java
  • タイムゾーンの復元(?)

    PCの時刻が全然合わなくなりました。 『日付と時刻のプロパティ』の『タイムゾーン』を見ると、 (GMT+09:00)大阪、札幌、東京になっていますが、 下に出ている地図にはどこか別の島が出ています。 おそらくそこの時刻を示しているんだと思います。 他の場所に変えようと思っても、消えてしまっています。 (多分DiscX toolで『不要なタイムゾーン削除』をしてしまったせい) タイムゾーンを復元する方法はあるのでしょうか? 教えてください。

  • タイムゾーンと時刻について

    お尋ねいたします。 「日付と時刻のプロパティ」の「タイムゾーン」はGMT+09:00大阪 東京 札幌 に設定してあります。しかしGPSを取り込んで見たらその個体のタイムゾーンがGMT-0.03などとなり、再度インストール試みましたが変わりません。時刻調整のソフト等で(E-timing)調整してみましたらそのソフトも同じGMT-0.03になります。GPSのログファイルの時間帯が狂うので困っています。タイムゾーン調べたら-0.03等あるのでしょうか? それとインターネット時刻調整のサーバーが三個ありntp.nict.jpのみ同期しますが時刻は合いません、他の二つtime.windows.com、time.nist.govは同期に失敗となります。よろしくお願いいたします。 PC環境:Window XP SP2. Firefox ver2.00 追伸:GPSはGPS-CS1Kです。  

  • 2003/07/01-20:10:55をローカルタイムに

    GMT2003/07/01-20:10:55のように指定された時間を、 タイムゾーンで指定するGMTからのオフセットに対応 させた2003/07/02-05:10:55のようなローカルタイム に変換するにはどのような方法が一般的ですか?

  • タイムゾーンの追加

    つい先日買い替えをしまして、NECのLavieC700/6Dを使用しています。OSはWinXPです。 日本からアメリカへ移動したため、タイムゾーンを「GMT+09:00 大阪、札幌、東京」からアメリカ西海岸のそれに変更しようと思いました。が、プルダウンメニューから選択できるタイムゾーンは前述の日本時間のみ。前に所有していたラップトップではいくつものタイムゾーンがリストされていたのですが、今回は一つだけでちょっと困っています。 タイムゾーンを追加する方法というのはあるのでしょうか?それともマニュアルで設定するしかないのでしょうか?よろしくお願い致します。

  • 異なるタイムゾーンのタイムサーバーとの時刻同期方法

    サーバー管理初心者の為、基本的なことかもしれませんがご教示下さい。 Unix(Solaris・AIX)、Linux(RedHat)でxntpdを用いてタイムサーバーと時刻同期設定をしようとしています。タイムサーバのタイムゾーンはJSTなのですが、タイムクライアント側{Unix(Solaris・AIX)、Linux(RedHat)の各サーバー}のタイムゾーンはGMTになっています。この場合でも、タイムゾーンがサーバー・クライアントと同じ時同様に、ntp.confでタイムサーバの設定を実施後にxntpdを起動すればJSTのタイムサーバーから取得した時刻を自動的にGMTのタイムゾーンに変換してくれますか?又、タイムサーバーとタイムクライアント側のタイムゾーンが異なると同期が取れないという場合は、サーバー・クライアントのタイムゾーンが異なった状態のままで、どの様にすれば同期が取れる様になるか、その方法を教えて頂ければと思います。 宜しくお願いします。

  • タイムゾーンについて…

    「日付と時刻のプロパティ」の「タイムゾーン」で、どの地域に設定してもロンドン時間(GMT)になってしまいます。 地図も、ロンドン中心の状態から変更なしです。 iPodも「タイムゾーン」でどの地域に設定していても、更新後にはロンドン時間に変更されています。 ウィルスバスター2006(アップデータで最新の状態)でのウィルス検索でも何も出ませんでした。 地域などの設定はすべて日本にしているはずなのですが、時間だけは常にロンドン時間になってしまっている状態です。 直すにはどうすればいいでしょうか? 【環境】 Windows Home Edition OEM (アップデータで最新の状態) 同期先サーバー:time.windows.com

  • Calendarオブジェクトにタイムゾーンの設定

    Calendarクラスで不思議に思ったことがあったので質問させてください。 下記サンプルのようにCalendarオブジェクトに対してタイムゾーンを設定しました。 表示1ではGMTタイム(9時間前の時間)が表示。 表示2では現在の時刻(設定したタイムゾーンを無視) して表示されてしまいます。これは仕様でしょうか。 JavaDocのなかで下記記述を見つけたのですがこの記述と関係ありますでしょうか。 いまいち文章が難解でよくわからないのですがgetメソッドなら計算した値 (この場合、タイムゾーンを反映して計算した値)を返しますよ と言っているのかなと 思ったのですが違いますでしょうか。 【JavaDocの記述】 「カレンダフィールド値は、set メソッドを呼び出して設定できます。 Calendar 内で設定されたフィールド値はすべて、その時間値 (「元期」からのミリ秒) または カレンダフィールドの値を計算する必要が生じるまで解釈されません。 get、getTimeInMillis、getTime、add、および roll の呼び出しでは、この種の計算が行われます。」 【サンプル】 Calendar cal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getTimeZone("GMT")); //表示1 System.out.println(cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.MONTH) + "-" +          cal.get(Calendar.DAY_OF_MONTH) + " " +          cal.get(Calendar.HOUR_OF_DAY) + ":" + cal.get(Calendar.MINUTE) + ":" +          cal.get(Calendar.SECOND)); //表示2 System.out.println(cal.getTime().toString());

  • タイムゾーンとシステム時間とローカル時間の関係

    少々ややこしいですがお付き合い下さい。 Windows2000Server日本語版を日本で使用しています。 Windowsにはシステム時間とローカル時間というのがあり、システム時間はGMTを、そこからタイムゾーンで設定した時差を元にローカルタ時間が計算され参照できると思っています。(間違えであれば指摘して下さい。) 例えばローカル時間を変更すると(プロンプトでtimeなどで変更する。)その時間を元にGMTを計算しシステム時間を計算して、システム時間を書きなおすという方法が取られていると思います。 現在の状況と問題点 ・タイムゾーンはアメリカ中部時間(GMT-6時間)に設定されている。 ・ローカルタイムを例えば3:00に設定する。 ・恐らくココでシステム時間(GMT)が9:00になるはず。 ・この状況でファイルを更新したり、イベントログを見たりすると、時間がおかしい。具体的には時刻が18:00になる。 恐らく、ファイルの更新日付の計算がGMT+9である事から出てきているのですが、この9時間は日本の時差ではありますが、タイムゾーンで設定されている時間ではありません。(タイムゾーンはアメリカだから) どこで設定されている時間から算出されているのでしょうか? (言語の設定?それともなんか他に固定で持っているものがあるのでしょうか?)

  • java.util.Date()メソッドについて

    Javaによるプログラミングについて、初歩的な部分で質問があり投稿させていただきました。 使用しているOSはWindowsXP Homeです。 現在PCにインストールされているJDKのバージョンはjdk1.6.0_03、JREのバージョンはjre1.6.0_03です。 Javaプログラムのコードはメモ帳で記述し、コマンドプロンプトからjavacでコンパイルを行っています。 さて、 System.out.println(new java.util.Date()); のようなコードを書いてコンパイルし実行した場合に、表示される時間がJSTではなくGMTになってしまい困っています。 java.util.Calenderを用いれば解決することは分かっているのですが、どうにも気になってしまったので、何か解決する術があればと思い、質問させていただきました。 ちなみに、システムのタイムゾーンは東京になっています。

専門家に質問してみよう