2015-02-11 4 views
3

Я пытаюсь отформатировать даты, которые я извлекаю из таблицы базы данных, я хотел отформатировать с «2015 02 11 12 00» до « Feb 2 ", но он дает ошибку при форматировании. Есть ли другие способы форматирования этих дат?Вызывает: java.lang.IllegalArgumentException: Bad class: class java.lang.String

После кодов:

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

Вот мой 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) 

в android.os.AsyncTask $ SerialExecutor $ 1.Run (AsyncTask.java:230) в java.util. concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) по адресу java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:573) в java.lang.Thread.run (Thread.java:838)

+1

пожалуйста, напишите полные трассировки стеки для исключения, так что мы знаем, что линия, чтобы начать смотреть. – emerssso

ответ

12

Вы могли бы вы этот формат даты форматированием .......

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); // 

// если в этом входе формата является 2015-2-22, чем вывод будет 22-февраля-2015

+0

вы могли бы установить формат в соответствии с вашими требование .... подобный ("yyyy-MM-dd hh: mm: ss") –

+0

Это работает! благодаря.. –

5

DateFormat.format ожидает Number или Date но вы передаете ему String. Вы можете захотеть parse the string, но форматирование будет производить только ту же строку, которую вы проанализировали бы.

+0

Ошибка: (138, 31) error: не найдено подходящего метода для формата (SimpleDateFormat, String) 'Кстати, я объявил' SimpleDateFormat formatdate = new SimpleDateFormat («Mmm dd»); ' –

1

Вы должны форматировать вход, а затем передаются в выходной формат

try { 
    String formattedString = new SimpleDateFormat("dd MMM yyyy").format(new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-31")); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
Смежные вопросы