2014-03-06 80 views
2

我真的試圖將一個字符串轉換爲日期:錯誤字符串轉換爲日期:ClassCastException異常

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(System.currentTimeMillis()); 
Date dataEvento = null; 

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); 
dataEvento = (Date)dateFormat.parse("28/08/2010"); //the app crash here 

logcat的:

03-06 10:06:19.867: E/AndroidRuntime(426): FATAL EXCEPTION: main 
03-06 10:06:19.867: E/AndroidRuntime(426): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ladessa.jccb/com.ladessa.jccb.MainActivity}: java.lang.ClassCastException: java.util.Date 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.os.Looper.loop(Looper.java:123) 03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread.main(ActivityThread.java:4627) 
03-06 10:06:19.867: E/AndroidRuntime(426): at java.lang.reflect.Method.invokeNative(Native Method) 
03-06 10:06:19.867: E/AndroidRuntime(426): at java.lang.reflect.Method.invoke(Method.java:521) 
03-06 10:06:19.867: E/AndroidRuntime(426): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-06 10:06:19.867: E/AndroidRuntime(426): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-06 10:06:19.867: E/AndroidRuntime(426): at dalvik.system.NativeStart.main(Native Method) 03-06 10:06:19.867: E/AndroidRuntime(426): Caused by: java.lang.ClassCastException: java.util.Date 
03-06 10:06:19.867: E/AndroidRuntime(426): at com.ladessa.jccb.MainActivity.createScheduledNotification(MainActivity.java:59) 
03-06 10:06:19.867: E/AndroidRuntime(426): at com.ladessa.jccb.MainActivity.onCreate(MainActivity.java:110) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-06 10:06:19.867: E/AndroidRuntime(426): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
03-06 10:06:19.867: E/AndroidRuntime(426): ... 11 more 
+1

崩潰?請顯示堆棧跟蹤。 – Thom

+0

好的,只是片刻 – Ladessa

+1

爲什麼你已經將日期解析結果轉換爲日期? – Thom

回答

5

在下面的行...

(Date)formatter.parse(str) 

您正在嘗試轉換java.util.Date類型Date對象java.sql.DateDate類型的對象......這就是爲什麼它引發此Exception

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date 

而其造成由於以下包裝的進口...

import java.sql.Date; 

您應導入下面的包。所以,你應該刪除上面的導入並將其導入到下面的導入中。

import java.util.Date; 
+2

你怎麼知道的?在問題中沒有關於'java.sql.Date'的內容,並且沒有指出錯誤... –

+0

原因...我也面臨同樣的問題。 –

+1

這可能是一個'日期'是一個指標有一個類型不匹配 –

1

更改庫:) java.sql.Date to java.util.Date;)這可能幫助。

+1

這看起來與Hamid的答案非常相似,但是我根本沒有看到任何導入問題......您從哪裏得到OP使用'java.sql.Date'的信息? –

+0

Maybye,但在我身上我遇到了同樣的問題。所以這是常見的錯誤。但是帖子可能會在同一時間發佈,我沒有先看到上面的答案。 – RMachnik

1

其導入錯誤的庫概率傢伙只是用這個

import java.util.Date; 
1

試試這個代碼什麼

String Stringdate = "28/08/2010"; 
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
Date convertedDate = new Date(); 
try { 
    convertedDate = dateFormat.parse(Stringdate); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    System.err.println("Date Conversion Error : " + e.getMessage()); 
} 
System.out.println(convertedDate);