3

如何将以下字符串日期转换为 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

4 回答 4

7

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

于 2012-11-28T07:26:08.417 回答
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上的整个日期模式。

于 2012-11-28T07:26:03.033 回答
4

您快到了。

去掉 hh 之后的 24 并将其更改为 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这是通过将毫秒数从到修剪到 3 位来解决的245

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

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

编辑:感谢 Jesper 指出我的错误措辞

于 2012-11-28T07:26:28.370 回答
2

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

dateFormat = new SimpleDateFormat("MM/dd/yyyy  HH:mm:ss:SSS");
于 2012-11-28T07:27:39.630 回答