11

Java用の優れた厳密な日付パーサーはありますか? Joda-Time にアクセスできますが、このオプションはまだ表示されていません。「Java に適した日付パーサーはありますか」という質問を見つけました。これは関連していますが、逆のようなものです。その質問は、寛大で、よりファジーな論理で、人為的エラーを起こしやすいパーサーを求めていましたが、私は厳密なパーサーが欲しいです。たとえば、「MM/dd/yyyy」という形式の場合、JodaTime (私が知る限り) と simpleDateFormat の両方を使用します。

これを解析してください: 40/40/4353

これが有効な日付になります。40 が無効な月と日付であることを認識するパーサーが必要です。確かにこれのいくつかの実装は Java に存在しますか?

4

3 に答える 3

11

DateFormat で厳密な検証を行う良い方法は、解析された日付を再フォーマットし、元の文字列と等しいかどうかを確認することです。

String myDateString = "87/88/9999";
Date myDate = dateFormat.parse(myDateString);
if (!myDateString.equals(df.format(myDate))){
  throw new ParseException();
}

魅力のように機能します。

于 2010-03-01T14:51:49.047 に答える