3

実行時に Java プログラムで奇妙な現象を見つけました。コードを見てください。

System.out.println(" date " + new Date(1359931355141L).toGMTString() );

このステートメントによる出力は「date 3 Feb 2013 22:42:35 GMT」であり、

System.out.println(" date " + new Date(1359931355141L).getDate() );

これによる出力は「date 4」でした。なぜ3ではないのですか???

プログラムの何が問題なのかわかりませんでした。JVM がバグに遭遇したかどうか疑問に思っています。
皆さん、この 2 つのステートメントについて、JVM でテストを行いませんか?

4

3 に答える 3

12

中央ヨーロッパの東 (少なくとも GMT+1.5 時間のタイムゾーン) に住んでいるため。

getDate()(これは非推奨です) はday of the month を返し、 4(代わりに3) を返します。これは、あなたのタイムゾーンでは、そのエポック時間が既に翌日になっているためです。一方、イギリス (GMT) ではまだ月の日3です。

于 2013-07-11T12:32:24.573 に答える
1

あなたのロケールは何ですか?2013 年 2 月 3 日 22:42:35 GMT であるが、ロケールが GMT+10 の場合、ローカル日付は 4 になります。奇妙なことは何もありません。これは予想される動作です。

于 2013-07-11T12:32:19.200 に答える
0

良い。これは、現在のロケールによって異なります。GMTタイムゾーンの場合、GMTは時間を提供します。getDate は、ロケールの時間を提供します。

于 2013-07-11T12:34:53.150 に答える