0

日付オブジェクトに解析する「27-11-2012」のような日付の形式の文字列値を含む、解析されたJSON結果が返されます。このための私のコードは次のとおりです。

public Date stringToDateReport(String s){
        //Log.d(TAG,    "StringToDateReport here is " + s);
        DateFormat format;
        Date date = null;

        //if(s.matches(""))
         format = new SimpleDateFormat("dd-MMM-yyyy");

        try {

            date = (Date)format.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

今私の問題は、jsonが「2012」のような年オブジェクトのみを返し、期待どおりに「ParseException:Unparseabledate」を返す機能が実装されていることです。正規表現を使用して文字列パターンを照合し、そこから解析することを考えていましたが、その方法がわかりません。アイデアや、とにかくDateFormatで1年だけを解析するアイデアはありますか?

4

3 に答える 3

2

このコードを試してください

public Date stringToDateReport(String s){
    //Log.d(TAG,    "StringToDateReport here is " + s);
    DateFormat format;
    Date date = null;

    if(s.indexOf("-") < 0){
     format = new SimpleDateFormat("yyyy");
    }else{
     format = new SimpleDateFormat("dd-MMM-yyyy");
    }
    try {

        date = (Date)format.parse(s);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return date;
}

に別の形式がある可能性はありString sますか?それともこの2つだけですか?

于 2012-11-27T15:30:54.407 に答える
2

私は試してみたい:

public Date stringToDateReport(String s){
    DateFormat format;
    Date date = null;

    format = new SimpleDateFormat("dd-MM-yyyy");

    if(s.length()==4) {
        format = new SimpleDateFormat("yyyy");
    }
    try {
        date = (Date)format.parse(s);
    } catch (ParseException e) {
        //you should do a real logging here
        e.printStackTrace();
    }
    return date;
}

背後にあるロジックは、文字列の長さが 4 つだけかどうかを確認してから、別の形式を適用することです。この場合、この簡単な方法で十分ですが、他の方法では正規表現の使用が必要になる場合があります。

于 2012-11-27T15:29:27.377 に答える
0
public Date stringToDateReport(String strDate){
    DateFormat formatnew SimpleDateFormat("dd-MM-yyyy");
    Date date = null;

    if(strDate.length()==4) {
        format = new SimpleDateFormat("yyyy");
    }
    try {
        date = (Date)format.parse(strDate);
    } catch (ParseException e) {
        //error parsing date
        e.printStackTrace();
    }
    return date;
}

次に、次のように呼び出します。

String strDate = yourJson.getString("date");
Date d = stringToDateReport(strDate);
于 2012-11-27T15:42:11.540 に答える