3

おはようございます!私は過去 2 時間、次のコードを使用して、フォーラム、Google、および JDK 1.6 のドキュメントを精査して、何が起こっているのかを調べましたが、これを機能させることはできません。コードが 07/25/2010 11:59:33 PM を出力することを期待しますが、代わりに 01/25/2010 11:59:33 PM が得られます。

String dateString = "07/25/2010 11:59:33 PM";
DateFormat format = new SimpleDateFormat("MM/DD/yyyy hh:mm:ss a");
Date testDate = format.parse( dateString );

System.out.println(format.format(testDate));

JDKのせいかなと思い、Joda-Timeで同じことを書いてみたところ、同じ結果になりました。DateFormat の仕組みに何か欠けていますか?

あなたが提供できる洞察を前もって感謝します!

4

3 に答える 3

3

問題は、フォーマット文字列の「DD」です。「dd」である必要があります。

「DD」は「年の日」を意味します...つまり、その年の25日について話しているのですが、7月には...「年の日」が優先されるので、1月になります。代わりに25日。

于 2010-07-29T14:14:38.053 に答える
1

DD は、ユリウス日と同様に 1 年のうちの日を意味します。ユリウス日は 1 年のどの日でも表すことができるため、月は無視されます。代わりに dd (月の日) を使用すると、正しい結果が得られます。

于 2010-07-29T14:24:17.990 に答える
0

フォーマッタの大文字と小文字を区別する問題に注意する必要があります。彼らは少し奇妙な組織です。

で試してみてください

DateFormat format = new SimpleDateFormat("MM/DD/yyyy hh:mm:ss a");

編集:DDは年の日を意味し、dd=月の日を意味します

JAVA 1.6APISimpleDateFormatを参照する

于 2010-07-29T14:15:54.590 に答える