3

mm / dd/yyyyStringの形式の日付を含む複数のオブジェクトを使用してオブジェクトに解析していますDateSimpleDateFormatter

私が直面している問題は、一部の文字列には完全な日付が含まれているため、mm / dd / yyyyであるのに対し、一部の文字列には年が含まれておらず、この形式のmm/ddであるということです。

この形式を使用して日付MM/dd / yyyyを解析していますが、月と日のみの文字列を取得するたびに、解析の例外が発生します。

知りたいのですが、年のフィールドが欠落している場合、0000のようなものを使用できるか、例外本体のみに取り組む必要がある方法はありますか?

4

4 に答える 4

4

SimpleDateFormat2 つの個別のインスタンスを作成するだけです。最初に文字列を分析し、正しいフォーマッタに渡します。

または、最初のものに渡し、例外がスローされた場合は、2 つ目に渡します。

于 2012-08-28T07:01:40.287 に答える
2

私の知る限り、1年を「必要としない」SimpleDateFormatのインスタンスを作成できます。したがって、try-catch-Blockを使用するだけです

 try{
    //try formatting with simpledate instance with year
 }catch (Exception thrown when no year){
    try{
       //try formatting with simple date instace without year
    } catch (Exception e)
       //something went wrong both did not accept it
    }
}
于 2012-08-28T07:08:11.537 に答える
0
ParseDate(String yourDate);
{
try {
Date reqDate=sdf.parse(yourDate);//sdf is instance of you date formatter
return reqDate;
} catch (ParseException e) {
return null;
e.printStackTrace();
}
}

この機能を使ってみてください。うまくいくと思います。例外がスローされた場合、null が返されます。このように null をチェックすることで、正しく解析されているかどうかがわかります。

于 2012-08-28T07:26:18.437 に答える
-1

コードは千の言葉に値する....

        DateFormat df;
        Calendar c = Calendar.getInstance();
        String s = new String("12/25/2012");

        String[] arr = s.split("/");

        if(arr.length>2){

c.set(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]),Integer.parseInt(arr[2]));
        }
        else{

            c.set(Integer.parseInt(arr[0]), Integer.parseInt(arr[1]));
        }

        df = DateFormat.getDateInstance(DateFormat.SHORT);

        System.out.println(df.format(c.getTime()));

) メソッドを使用して、後でDate オブジェクトに戻すことができます...df.parse(

于 2012-08-28T07:44:13.247 に答える