0

我得到返回的解析 JSON 结果,其中包含日期形式的字符串值,例如“27-11-2012”,我将其解析为日期对象。我的代码是:

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: Unparseable date”。我正在考虑使用正则表达式来匹配字符串模式并从那里解析,但不知道该怎么做。有什么想法,而且无论如何都要解析 DateFormat 中的年份吗?

4

3 回答 3

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 回答
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?还是只有这两个?

于 2012-11-27T15:30:54.407 回答
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 回答