如何在Java中将以下字符串日期转换为Java数据格式?

时间:2012-11-28 07:22:24

标签: java simpledateformat

如何在Java中将以下字符串日期转换为数据格式?

"10/01/2012  06:45:23:245946"

我正在使用以下代码

dateFormat = new SimpleDateFormat("MM/dd/yyyy  hh24:mm:ss:SSS");
java.util.Date parsedDate = dateFormat.parse("10/01/2012  06:45:23:245946");

我收到以下错误

    java.text.ParseException: Unparseable date: "10/01/2012  06:45:23:245946"

4 个答案:

答案 0 :(得分:7)

SimpleDateFormat中没有hh24,您应该使用HH

答案 1 :(得分:5)

你的模式错了。尝试:

"MM/dd/yyyy  HH:mm:ss:SSS"

日期匹配模式中没有hh24

小时的模式如下:

H  Hour in day (0-23)  Number  0  
k  Hour in day (1-24)  Number  24  

查看SimpleDateFormat javadoc上的整个日期模式。

答案 2 :(得分:4)

你快到了。

摆脱24后hh并将其改为HH,这应该可以使它工作。

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy  HH:mm:ss:SSS");
Date parsedDate = dateFormat.parse("10/02/2012  06:45:23:245946");
System.out.println(parsedDate);

这会给你一个错误的时间,但会解析成功的日期,我们的所有答案也是如此。 通过将毫秒从“245946”调整为“245

,可以修复此问题。

如果你想使用6位数字,我建议查看JodaTime API以获得更高级的日期处理,因为JodaTime处理微秒。但至于java.util.Date,你恐怕不幸。

阅读此bug报告原因: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4148168

编辑:感谢Jesper指出我的不良措辞

答案 3 :(得分:2)

日期格式中的24是无效的格式说明符。去掉它。 HH相当于24小时制的小时数。

dateFormat = new SimpleDateFormat("MM/dd/yyyy  HH:mm:ss:SSS");