2

を使用SimpleDateFormat.parse(String)するには、形式で指定されたすべてのフィールドが入力文字列に存在する必要があります。私が望むのは、部分的な入力文字列を同じ形式に対して検証する方法です。

たとえば、Format="yyyy/MM/dd HH:mm:ss"andInput="2012/01/01"は一致する必要があり、時刻はゼロに設定する必要があります。

これを行う方法はありますか?現在、SimpleDateFormat例外をスローします。

4

3 に答える 3

5

DateUtils#parseDate(String, String[])ApacheUtilsから試してみてください。それはあなたが許可されたフォーマットの配列を渡すことを可能にし、何かが収まるまでそれぞれを試します。

于 2012-06-21T15:58:05.637 に答える
2

SimpleDateFormatそれぞれが異なる日付形式を持つ2つの異なるオブジェクトを使用し、最初のオブジェクトを使用します。解析例外がスローされた場合は、もう一方を使用してください。

最善の解決策IMHOは、最初に正規表現を使用して文字列をチェックし、使用する解析形式を把握することです。Calendarまた、文字列を少なくとも2回(1つは正規表現で、2つ目は)解析するのではなく、正規表現でグループ化を使用して、自分で日付を作成する(たとえば、を使用する)こともできますDateFormat

于 2012-06-21T15:41:53.593 に答える
0

m0skit0 によって提案されたソリューションを実装する方法を次に示します。複数SimpleDateFormatを使用すると、try catch で解析をカスケードできます。

SimpleDateFormat fullFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat shortFormat = new SimpleDateFormat("yyyy/MM/dd");

String input="2012/01/01";
Date res;
try {
    res = fullFormat.parse(input);
} catch (ParseException e) {
    res = shortFormat.parse(input);
}
于 2012-06-21T15:59:52.050 に答える