在Java中将字符串转换为日期时的ClassCastException

在Java中将字符串转换为日期时的ClassCastException,java,Java,我发现了错误 java.lang.ClassCastException:java.util.Date 在avb.Test.main(Test.java:38) 简化格式(“yyyy-MM-dd HH:MM:ss.SSS”) 从代码 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); String tmp = "2012-03-16 18:58:14.0"; Date MaxCmTimerUpdate = (Date)d

我发现了错误

java.lang.ClassCastException:java.util.Date
在avb.Test.main(Test.java:38)
简化格式(“yyyy-MM-dd HH:MM:ss.SSS”)

从代码

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String tmp = "2012-03-16 18:58:14.0";
Date MaxCmTimerUpdate = (Date)df.parse(tmp);

我做错了什么?如何修复它?

我猜您已经导入了
java.sql.Date
(或其他
Date
类型),而
SimpleDateFormat
解析为
java.util.Date
。你根本不需要演员

您将无法强制转换为不同的
Date
类型-如果需要创建
java.sql.Date
,则必须基于
java.util.Date
创建一个新类型,例如

Date timerUpdate = new Date(df.parse(tmp).getTime());

您是否意外地导入了
java.sql.Date
而不是
java.util.Date
?这是你需要演员的唯一原因

该死!又被乔恩·斯基特打败了!乔恩,谷歌付给你多少钱?;-)

这是否有效:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String tmp = "2012-03-16 18:58:14.0";
java.util.Date maxCmTimerUpdate = df.parse(tmp);

如果是这样,那么其他两个答案是正确的。

您确定您在
(Date)df.parse(tmp)
行中转换到java.util.Date吗?此外,
DateFormat.parse(String)
已经返回java.util.Date,因此不需要强制转换。