5

pattern の SimpleDateFormat とyyyy-M-d"、次のシナリオがあります。

String str = "02-03-04";        
SimpleDateFormat f = new SimpleDateFormat("yyyy-M-d");
f.setLenient(false);
System.out.println(f.parse(str));

出力はSat Mar 04 00:00:00 EST 2

私の目標は、2004-02-03 のような形式の日付のみをキャッチし、02-03-04 を無視することでした。パターンの yyyy には 4 桁の年が必要だと思っていましたが、明らかにそうではありません。これが解析例外をスローしない理由を誰か説明できますか? 私はそれをしたい...

4

2 に答える 2

8

まあ、私はドキュメントからそれを説明することができます:

構文解析では、パターン文字の数が2を超える場合、桁数に関係なく、年は文字通りに解釈されます。したがって、パターン「MM / dd / yyyy」を使用すると、「01/11/12」は西暦12年1月11日に解析されます。

Joda Timeがより厳しくなる可能性があります-そして、それは一般的に、より良いAPI、IMOです...

解析後の年が1000未満の場合は、いつでも例外をスローできます...

于 2010-12-10T15:48:19.030 に答える