//fix this/ Javaコードの間違いをさがせ!
このシリーズは、あなたのコーディング・スキルを試すコーナーです。毎号オラクルのJavaエバンジェリストたちが、Javaコードに関する難問を出題し、正解と解説を掲載します。是非、毎号チャレンジして貴方のコーディング能力の向上にお役立て下さい。
Articles
Java
Java技術関連記事
Fix This
このシリーズは、あなたのコーディング・スキルを試すコーナーです。毎号オラクルのJavaエバンジェリストたちが、Javaコードに関する難問を出題し、正解と解説を掲載します。是非、毎号チャレンジして貴方のコーディング能力の向上にお役立て下さい。
ファイルからデータをロードする際、日付の解析で問題が起きる場合があります。 思い浮かぶ簡単な解決策は SimpleDateFormat を使用することですが、 これは適切な解決策なのでしょうか 。
次のコードに目を通して、その結果について考えてください。
String value = "01-04-1989";
String dateFormatString = "yyyy-MM-dd";
SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatString);
try {
System.out.println("Result: " +
dateFormat.format(dateFormat.parse(value)));
} catch (ParseException e) {
System.out.println("Error date parsing: " + value + " in format " +
dateFormatString);
e.printStackTrace();
}
1) Error parsing: 01-04-1989 in format yyyy-MM-dd
2) 0006-09-10
3) 1989-04-01
4) 0104-19-89
<ヒント>
パターン・マッチングについてよく考えること
正解は、2)です。DateFormat クラス(SimpleDateFormat のスーパークラス)には lenient プロパティがあり、このケースでは厳密なパターン・マッチングを適用するため、このプロパティを false に設定する必要があります。DateFormat クラスを使用する際は注意してください。
正しいコードは次のようになります。
SimpleDateFormat dateFormat = new SimpleDateFormat(dateFormatSt ring); dateFormat.setLenient(false);"