I'm trying to format dates which I retrieve from my database table, I wanted to format from "2015 02 11 12 00" to "Feb 2" but it gives an error when I format it. Is there any other ways formatting those dates?
Following the codes:
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_all_events, "GET", params);
// Check your log cat for JSON reponse
Log.d("All events: ", json.toString());
try {
// Checking for SUCCESS TAG
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// events found
// Getting Array of events
events = json.getJSONArray(TAG_EVENTS);
// looping through All events
for (int i = 0; i < events.length(); i++) {
JSONObject c = events.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_PID);
String eventname = c.getString(TAG_EVENTNAME);
String eventstart = c.getString(TAG_EVENTSTART);
String eventstartconvert = formatdate.format(eventstart); //this line gives an error.
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_PID, id);
map.put(TAG_EVENTNAME, eventname);
map.put(TAG_EVENTSTART,eventstartconvert);
// adding HashList to ArrayList
eventsList.add(map);
}
}
Here's my logcat:
02-11 09:14:40.997 25966-26198/com.example.jithea.testlogin E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)
Caused by: java.lang.IllegalArgumentException: Bad class: class java.lang.String
at java.text.DateFormat.format(DateFormat.java:359)
at java.text.Format.format(Format.java:93)
at com.example.jithea.testlogin.EventsActivity$LoadAllevents.doInBackground(EventsActivity.java:137)
at com.example.jithea.testlogin.EventsActivity$LoadAllevents.doInBackground(EventsActivity.java:91)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:838)
You could you this format for date formating.......
DateFormat inputFormatter1 = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = inputFormatter1.parse("2015-2-22");
DateFormat outputFormatter1 = new SimpleDateFormat("dd-MMM-yyyy");
String output1 = outputFormatter1.format(date1); //
// if in this format input is 2015-2-22 than out put will be 22-Feb-2015
DateFormat.format
expects Number
or Date
but you are passing it a String
. You may want to parse the string but formatting it would just produce the same string you would parse.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With