Siva K
Siva K

Reputation: 4968

Unable to change the date format in android

From a web service i am getting a date format as 1994-09-11 in my android app i need to display this as Sep 11

My code is as follows

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;
    }

When the above method is called, the first log value is been printed(the value which i get from the web), then my app gets crashed saying that

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)

Here line number 206 is the first line inside try catch of the above method. What is wrong with my code, pls suggest me.....

Upvotes: 0

Views: 266

Answers (3)

Simon J. Liu
Simon J. Liu

Reputation: 827

The DateFormat is not used like that way. You declare a formatter but never initialize it. To format a date, you need to do it like this,

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

You need a SimpleDateFormat to convert your date string to date and another SimpleDateFormat to format your date to a new string. Try this code,

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();
}

Upvotes: 0

Nishant Anindya
Nishant Anindya

Reputation: 539

You can use string builder after getting date from web try this

//wherever you want to set this you can set as below:

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(" "));

Upvotes: 2

Warpzit
Warpzit

Reputation: 28162

DateFormat formatter; <-- it is never initialized. so you are calling a methode on null.

Maybe you want to use:

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

Instead of formatter.

Upvotes: 2

Related Questions