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

このQ&Aのポイント
  • Javaによるプログラミングについて、初歩的な部分で質問があり投稿させていただきました。使用しているOSはWindowsXP Homeです。
  • 現在PCにインストールされているJDKのバージョンはjdk1.6.0_03、JREのバージョンはjre1.6.0_03です。
  • System.out.println(new java.util.Date());のようなコードを書いてコンパイルし実行した場合に、表示される時間がJSTではなくGMTになってしまい困っています。
回答を見る
  • ベストアンサー

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を用いれば解決することは分かっているのですが、どうにも気になってしまったので、何か解決する術があればと思い、質問させていただきました。 ちなみに、システムのタイムゾーンは東京になっています。

noname#249429
noname#249429

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

俺はJavaをがんがんやっているという人間ではないし, >java.util.Calenderを用いれば解決する という意味を取り違えているかもしれないが, 例えば http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6501839http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4159107 では Calendar.getInstance とか java.util.SimpleTimeZone が正しいタイムゾーンを返さないバグとして挙がっている。 上の例ではWindows 2003 Resouce Kitのtimezone.exe等を用いて, DST(夏時間)パッチを当てた場合,Javaが,システムのロケールの判断に使う レジストリTIMEZONEINFORMATIONがそれに応じて変更されないためで, コントロールパネルの「日付と時刻」でタイムゾーンのタブを選択し,OKを押すことで回避できるとしている。Java側では修正しないらしい。 #XPとVistaに以前提供されていたパッチと違うのだろうか? #ちなみに別バグ報告によるとVistaでは見るレジストリキーが違うらしい #行ったことでなくてもレジストリ情報があるか,アクセス権が正しいか等を確認するのは価値のあることだと思うよ。 #これは読んでません。全く関係ないかも。 http://support.microsoft.com/kb/914387/ja

noname#249429
質問者

お礼

早速のご回答、ありがとうございます。 コントロールパネルの件、試して実行してみましたがやはりうまく行きませんでした。 しかしバグ報告は大変参考になりました。 私がCalendarを使えば解決する、としたのは、タイムゾーンの情報を自分で与えてやりさえすれば、ただしく日本時間が表示できるという意味でした。 分かりづらい説明だったことをお詫びします。

関連するQ&A

  • java.util.Dateについて

    まずは下記ソースを参照してください。 import java.util.Date; import java.util.GregorianCalendar; import java.util.Calendar; public class Test{     public static void main( String args[] ){         GregorianCalendar cal = new GregorianCalendar(2004, 5, 31);         System.out.println("年:" + cal.get(Calendar.YEAR));         System.out.println("月:" + cal.get(Calendar.MONTH));         System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));         System.out.println(); // ただの改行         System.out.println("比較:" + new Date().compareTo(cal.getTime()));     } } 上記ソースについて質問です。 1.「年」「月」「日」を表示しておりますが、本来ならば 「年:2004」 「月:5」 「日:31」 と表示されると思っておりましたが実際は、 「年:2004」 「月:6」 「日:1」 と表示されてしまいます。 なぜでしょうか? 2.12行目にてjava.util.DateクラスのcompareToメソッドを用いて、 現在日付(2004/5/28)と7行目で指定している日付の比較をしていますが、 7行目で設定している日付を現在日付よりも前後に設定して実行させても、 「-1」しか返りません。 なぜでしょうか? 環境は、 J2SDK:1.4.2 OS:Windows XP Pro です。

    • ベストアンサー
    • Java
  • JavaのDateクラスについて教えてください.

    下のプログラムを実行すると, Date : Mon Jan 30 15:30:00 JST 2006 となります. 私としては,Apr となることを期待するのですが, おかしいでしょうか? Javaの環境は,jdk1.5.0_05 です. // ここから import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) throws Exception { String dateStr = "2006/04/30 15:30"; Date date = new SimpleDateFormat("yyyy/MM/DD HH:mm").parse(dateStr); System.err.println("Date : " + date); } }

  • JAVAの開発、実行環境について

    最近JAVAの勉強をスタートした者です。 環境はWinXPSP3 SUN Microsystems から最新版のJDKをDLし、環境変数も設定、定番の初歩『HelloWorld』表示に着手しました。 public class helloworld { public static void main(String args[]) { System.out.println("Hello Java World !"); } } javac helloworld.java でコンパイル java helloworld で実行 java.lang.UnsupportedClassVersionError というエラーがきました。 調べたところ、開発環境と実行環境のバージョンの違いが原因とのこと。 javac 1.6.0_06 java version "1.4.2_03" となっていました。 さて、このjava versionがどうやっても更新できません。 JREの最新版をDLしても変わらず。 コントロールパネルのJAVA(TM)コントロールでは、JAVAアプリケーションランタイムの設定は、1.0.6_06としっかり最新版になっています。 コマンドで表示すると1.4、コンパネからだと1.6、これはどうして異なるのでしょうか?というかむしろ別のもの? またどのように設定したら、問題が解決されるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • javaの簡単なソースがコンパイル出来ません

    Javaを始めてみましたが、最も簡単なjavaのソースがどうしてもコンパイル出来ません。 どうしたらいいのか教えて下さい。 デスクトップの以下の Hello.java に対して、 public class Hello { public static void main(String[] args) { System.out.println("Hello,World"); } } 以下の3通りの方法でコンパイルを掛けてみると、 ‥デスクトップ>javac Hello.java javac:ファイルが見つかりません:Hello.java 使い方:javac <ptions> <source files> 使用可能なオプションのリストについては-helpを使用します >javac Hello.java.txt エラー:クラス名 ‘Hello.java.txt’が受け入れられるのは、注釈処理が明示的に要求された場合だけです エラー1個 >javac Hello エラー:クラス名 ‘Hello’が受け入れられるのは、注釈処理が明示的に要求された場合だけです エラー1個 でどの場合もコンパイルされません。 なお、javaのバージョンは “1.6.0_06”で、パスも C:\Program Files\Java\jdk1.6.0_06\bin\; と設定してあります。 どうしたらコンパイルが出来るのか、教えて下さい。

    • ベストアンサー
    • Java
  • JAVAの開発環境と実行環境について

    JAVAの開発環境JDKと実行環境JREについてです。 環境 windows xp professional ・jdk1.5.0_09インストール後 JDK: jdk1.5.0_09 JRE: jre1.5.0_09 フォルダが生成された。 ・JRE(jre1.5.0_09)アップデート後 jdk1.6.0_013が新たにフォルダが生成された。(公開JRE) **************************************************************** このように開発環境がjre1.5.0_09でjavaプログラムを作成し、 コマンドプロンプト上コンパイル後、javac Test.java を行うと テストしている時点の実行環境としてはjre1.5.0_09\jre(非公開JRE)と jre1.6.13(公開JRE)のどちらが使われるのでしょうか? もし、jre1.6.13(公開JRE)が使われているとすると、jre1.5.0_09で 動作確認を行いたいならば、、jre1.6.13は削除しないといけないのでしょうか? 非公開JREと公開JREというものがあって、 私の環境では、 非公開JREがjre1.5.0_09\jre 公開JREがjre1.6.0_13 であることは理解しています。 ご指導のほど、よろしくお願いします。

  • NTEmacsでJavaのコンパイルをしたいです

    NTEmacsのシェルです。 Javaの勉強をつい最近始めました。JDKは入っていて、普段はjavac、javaは普通に動くのですが、import java.io.*;のようなことをすると、(パーケージを読みこませる等)その部分でエラーになってしまいます。 ただ、eclipseで同様のものを作ると、コンパイルはうまくいきます。 例 import java.io.*; class Sample4{ public static void main(String[] args) throws Exception { System.out.println("please imput something"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); System.out.println(str); } } 結果 c:\Users\***\Documents\Java>javac no_3.java javac no_3.java no_3.java:33: エラー: class、interfaceまたはenumがありません import java.io.*; ^ エラー1個

    • ベストアンサー
    • Java
  • JAVAのコマンド

    JAVAをやりたくて本のおまけCDROMからJDKを取り入れました。 コマンドプロンプトでjava -versionを入力するときちんと JDK~。とでて使える状態になっています。 しかし実際にJAVAファイルをつくってコンパイルしようとし javac ファイル名 と入力するとそのようなコマンドはありませんと 言われます。コマンドが使えない状態です。 アプリケーションが中途半端でインストールされたのでしょうか? もしわかったら教えてください。 当方WIN98se VAIO使っています。 JDKは1.3.1_02を使っています。

    • ベストアンサー
    • Java
  • Javaのコンパイル結果が表示されません

    はじめまして。 Javaのソースコードの文がコマンドプロンプトで表示されないことについて質問します。 正しいソースコードを記述してコンパイルしているはずなのですが、コマンドプロンプトでは何も表示されません。 たとえばMyJavaというファイルの中のtestfileというJavaファイルをコンパイルした場合、コマンドプロンプトでは c:\MyJava>javac testfile.java (空欄) c:\MyJava>javac testfile.java と表示されるだけで、本来ならば空欄の場所にSystem.out.println()の文が表示されるはずなのですが、表示されないのです。 よろしければ、原因を教えて頂けないでしょうか? お願いします。

    • ベストアンサー
    • Java
  • Javaのインストールを教えてください!

    javac~~~.java等でコンパイルするためにJDKをインストールしようと試みたのですが、どこでダウンロードすればいいのかわかりません。 http://java.sun.com/j2se/1.4.2/ja/download.html 自力でここまで行ったのですが、よくわかりません。 できればわかりやすく教えてください。 お手数ですが、よろしくお願いします。

  • JavaでPATH設定を修正する方法を教えて下さい

    Window7マシンにJava SE Development Kit 8(jdk-8u74-windows X64.exe)をインストールしました。 環境変数PATHの設定で、システム環境変数の中にすでに「Path」がありました。選択後の「編集」段階で最初から入力されている部分を消さないで最後のところに下記を追加すればよかったのですが、一部を消して編集してしまいました。 C:\Program Files\Java\jdk1.8.0_74\bin; これが原因してかどうか不明ですが、javacコマンドを実行してjavaソースプログラムをコンパイルすると、また「C:\>javac –version」とバージョン確認をしても、「'javac' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」のメッセージが表示されてしまい、コンパイルをすることもバージョン確認もできません。 因みに、javac.exe は、CドライブのProgram Files\Java\jdk1.8.0_74\bin にあり、次のようにしてバージョン確認をするとjavac 1.8.0_74と表示されて、バージョンが確認できます。 C:\Program Files\Java\jdk1.8.0_74\bin>javac –version インストールしたJava SE Development Kit 8 をアンインストールした後に、再度インストールして、PATHの設定・編集をしなおそうとしたのですが、アンインストール前に設定した PATH のままで修正はできませんでした。 次のように通常のjavacコマンドを実行してjavaソースプログラムをコンパイルするには、PATHの設定をどのようにすればよいかを教えてください。 C:\>javac Hello.java 或いは、PATHの修正ができない場合は、javaソースプログラムをコンパイルするには、どのようにすればよいかを教えてください。 尚、環境変数「JAVA_HOME」を、「変数名」を「JAVA_HOME」、「変数値」を「C:\java\jdk1.8.0_74;」として、JDKをインストールしたディレクトリに合わせて新規に設定していますが、コマンドプロンプトを起動し「set JAVA_HOME」と入力し実行したところ、JAVA_HOME=C: JAVA\ jdk1.8.0_74; と表示され、その後、「C:\>java –version」とjavaのバージョンを確認したところ、正常に確認できています。

    • ベストアンサー
    • Java