2014-03-06 50 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);