2

次のコード...

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Date date = df.parse("2012115");

...文字列"2012115"を2012年11月5日に相当する日付に解析します。1日の文字が欠落しているため、解析に失敗するようにします。つまり、文字列"20121105"をその日付まで評価するだけです。文字列の長さを評価する以外に、これを強制する方法はありますか?

4

2 に答える 2

1

...文字列"2012115"を2012年11月5日に相当する日付に解析します。1日の文字が欠落しているため、解析に失敗させたいです。つまり、文字列「20121105」だけをその日付まで評価したいのです。

フォーマッターだけを使ってそれができるとは思えません。回避策として、以下のように解析する前に、日付文字列の長さを確認することをお勧めします。

      String dateString = "2012115";
      String formatString = "yyyyMMdd";
      if(dateString == null || dateString.length() != formatString.length()){
         throw new ParseException("Invalid Date Input", 0);
      }
      SimpleDateFormat formatter= new SimpleDateFormat(formatString);
      formatter.setLenient(false);
      Date date = df.parse(dateString);    
于 2012-11-22T22:45:31.070 に答える
1

実際にもう一度フォーマットして、同じかどうかを確認できます

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
String dstr = "2012115";
Date date = df.parse(dstr);
String newdstr = df.format (date);
if (!newdstr.equals(dstr)) {
   throw new ParseException ("bla bla");
}
于 2012-11-22T22:47:24.570 に答える