2

SimpleDateFormatを使用していくつかの簡単な検証を行っていますが、1 つのことを除いて正常に動作します。その suffix/end を無視するだけです. そのような入力に対して ParseException をスローさせる方法はありますか?

前もって感謝します!

4

2 に答える 2

2

フォーマットされた日付が一致するかどうかを確認できます。

SimpleDateFormat sdf = new SimpleDateFormat("M/dd/yy h:mm a");
Date date = sdf.parse(t);
String t2 = sdf.format(date);
if (!t2.equals(t))
    throw new ParseException("Not an exact match '" + t2 + "' != '" + t + "'", 0);

末尾のテキストを確認したいだけの場合

if (!t.endsWith("M"))
    throw new ParseException("Invalid format '" + t + "'", 0);
于 2011-05-03T14:24:34.047 に答える
0

電話してみてくださいsetLenient(false)

日付/時刻の解析を寛大にするかどうかを指定します。寛大な構文解析では、パーサーはヒューリスティックを使用して、このオブジェクトの形式と正確に一致しない入力を解釈する場合があります。厳密な解析では、入力はこのオブジェクトの形式と一致する必要があります。

また、いくつかの強調を追加して解析するためにjavadocsを覗いてみてください(私のもの)...

このメソッドは、posで指定されたインデックスからテキストを解析しようとします。解析が成功すると、posのインデックスは、最後に使用された文字の後にインデックスに更新され(解析では、文字列の最後までのすべての文字が使用されるとは限りません)、解析された日付が返されます。更新された位置は、このメソッドへの次の呼び出しの開始点を示すために使用できます。エラーが発生した場合、posのインデックスは変更されず、posのエラーインデックスはエラーが発生した文字のインデックスに設定され、nullが返されます。

したがって、インデックスの位置と、場合によってはエラーの位置も確認する必要があります。何かのようなもの...

if (pos.getIndex() == input.length()) { /* all looks good */
于 2011-05-03T14:20:18.413 に答える