在Java中将String转换为Date时的ClassCastException

时间:2012-03-16 19:21:37

标签: java

我收到了错误

  

java.lang.ClassCastException:java.util.Date
  在avb.Test.main(Test.java:38)
  SimpleDateFormat(“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);

我做错了什么?我该如何解决?

3 个答案:

答案 0 :(得分:5)

我的猜测是你有java.sql.Date(或其他Date类型)的导入,而SimpleDateFormat则解析为java.util.Date。你根本不需要演员。

您将无法转换为其他Date类型 - 如果您需要创建java.sql.Date,则必须基于 > java.util.Date,例如

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

答案 1 :(得分:1)

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

该死!被Jon Skeet击败了!乔恩,谷歌付给你什么? ; - )

答案 2 :(得分:1)

这样做有效:

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

如果是这样,其他2个答案是正确的。