-3

dd-mm-yyyy の形式である場合、文字列でテストしようとしています。何か助けてください。

申し訳ありませんが、私はただの初心者です。

4

3 に答える 3

6

dd-mm-yyyyのような入力を許可する をチェックするだけでなく99-99-9999、 を使用SimpleDateFormatして実際に解析し、有効な日付かどうかをチェックできます。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");

日付が無効な場合はParseExceptionがスローされ、エラーをキャッチして適切に処理できます。

編集:

ボヘミアンが指摘したように、これは実際には99-99-9999入力で例外をスローしません。代わりに、「ロールオーバー」して、悪い日付を正当な日付として解釈します。日付の計算を簡単にするために、意図的にこれを行った可能性があると思います。例えば​​は解析後10-13-2000となり10-1-2001ます(13月がないので、代わりに翌年の1月になります)。代わりに例外をスローしたい場合は、寛大ではないように指示する必要があります。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false); // <== Added this line
formatter.parse("99-99-9999");
formatter.parse("18-07-2013");
于 2013-07-18T21:47:10.093 に答える
3
String test = "13-04-1999";

try {
  SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
  sdf.setLenient(false);
  sdf.parse(test);
} catch(ParseException ex) {
  //string is not valid Date in your format  
}
于 2013-07-18T21:45:29.837 に答える
2
if(myString.matches("\\d{2}-\\d{2}-\\d{4}")){
    //Do something
}

二重バックスラッシュは、コンパイラが 2 番目を文字どおりに解釈するために使用され、文字列の一部としての文字列は\d、数字のエスケープ シーケンスを作成するために使用されます。

于 2013-07-18T21:36:15.630 に答える