无法更改android中的日期格式

时间:2012-09-10 07:43:58

标签: android simpledateformat

从我的Android应用程序中获取日期格式为1994-09-11的Web服务,我需要将其显示为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内的第一行。 我的代码出了什么问题,请建议我......

3 个答案:

答案 0 :(得分:2)

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

也许你想用:

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

而不是格式化程序。

答案 1 :(得分: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(" "));

答案 2 :(得分: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();
}