3

私がする時:

new Date();

年、日、その他は大丈夫ですが、時と分は間違っています。コンピューターで64ビットのWindows7を使用しており、次のことを行っています。

Windows time is OK,
Bios Time is OK,
Windows Time Zone is OK,
Windows Time Zone at Regedit is OK

ただし、Javaで日付オブジェクトを確認すると(Java 1.6を使用)、ゾーン情報のIDはAmerica / Caracasであり、 Europe/Istanbulである必要があります。

何が問題になるのでしょうか、アイデアはありますか?

PS: VMパラメータとしてタイムゾーンを渡したくない、Calendarオブジェクトを使用したくないcos何かの代わりにDateオブジェクトを使用するライブラリがいくつかあるので、問題を学びたいだけです

4

2 に答える 2

3

このブログはあなたを助けることができると思います。

問題を解決するためのブログ投稿からの引用:

Windows XPのコントロールパネルから日付/時刻ダイアログを開き、次のいずれかの変更を適用すると、JavaAPIは正しく機能し始めます。

  • 日付/時刻を手動で変更してから、元の正しい時刻に戻します。
  • タイムゾーンを変更してから元のタイムゾーンに戻します。
  • タイムサーバーからの自動時刻更新を要求しています。

記録と同じブログから:

さらに調査したところ、次のことが明らかになりました。

  • JRE 1.3以降、SunJava仮想マシンのタイムゾーンの問題について不満が出ています。過去10年間に、間違ったデフォルトのタイムゾーンについて、Sun JavaVirtualMachineに対していくつかのバグレポートが提出されました。
  • ほぼすべてのレポートは、再現不可能であるとしてSunによって拒否されました。
于 2013-01-24T13:56:36.667 に答える
3

カレンダーを使用できます:

Calendar.getInstance(TimeZone.getTimeZone("GMT"), locale);

日付は「ロケール依存」です。ロケールも設定できます:

Locale.setDefault(...);
于 2013-01-24T13:53:26.727 に答える