0

从网络服务中,我得到了一个日期格式,就像1994-09-11在我的 android 应用程序中一样,我需要将其显示为Sep 11

我的代码如下

Date date_temp = null;
String d_temp = null;
DateFormat formatter;
static SimpleDateFormat datesdf = new SimpleDateFormat("yyyy MMM dd");

public String changeDateformat(String date_str)
    {
        Log.e("date_str ",""+date_str);
        try 
        {
            date_temp = (Date)formatter.parse(date_str);
            Log.e("date_temp ",""+date_temp);
            d_temp = null;
            d_temp = datesdf.format(date_temp);
            Log.e("d_temp ",""+d_temp);
        }
        catch (ParseException ex) 
        {
            ex.printStackTrace();
        }
        catch (java.text.ParseException e) 
        {
            e.printStackTrace();
        }
        return d_temp;
    }

当上述方法被调用时,第一个日志值被打印出来(我从网上得到的值),然后我的应用程序崩溃了,说

09-10 13:02:44.920: E/AndroidRuntime(3503): java.lang.NullPointerException
09-10 13:02:44.920: E/AndroidRuntime(3503): at xxxxxxxxxxx(Events.java:206)

这里第 206 行是上述方法的 try catch 中的第一行。我的代码有什么问题,请建议我.....

4

3 回答 3

2

DateFormat 格式化程序;<-- 它永远不会被初始化。所以你在 null 上调用一个方法。

也许你想使用:

static SimpleDateFormat datesdf = new SimpleDateFormat("yyyy MMM dd");

而不是格式化程序。

于 2012-09-10T07:51:30.533 回答
2

您可以在从网络获取日期后使用字符串生成器试试这个

//无论你想设置这个,你可以设置如下:

enter code here 
EditText aa;
aa.setText(   new StringBuilder()
           // Month is 0 based so add 1
            .append(day).append("/")
            .append(month + 1).append("/")
            .append(year).append(" "));
于 2012-09-10T07:57:46.883 回答
0

DateFormat 不是这样使用的。您声明了一个格式化程序,但从不初始化它。要格式化日期,您需要这样做,

d_temp = DateFormat.format("MMM dd", date_temp).toString();

您需要一个 SimpleDateFormat 将您的日期字符串转换为日期,并需要另一个 SimpleDateFormat 将您的日期格式化为一个新字符串。试试这个代码,

public static Date strToDate(String format, String date) {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    try {
        return sdf.parse(date);
    } catch (ParseException e) {
        return null;
    }
}

public String changeDateformat(String date_str) {
    Date t = strToDate("yyyy-MM-dd", date_str);
    return DateFormat.format("MMM dd", t).toString();
}
于 2012-09-10T07:52:29.710 回答