如何在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"
答案 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");