我在使用Java解析时间字符串时遇到了问题,它们的格式为2013-01-09 09:15:03.000000
。在我的数据中,最后三位数字始终为0(表示输入字符串仅有毫秒精度),因此我将此格式传递给SimpleDateFormat:
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS'000'");
但是 formatter.parse(“2013-01-09 09:15:02.500000”)
抛出了异常:
Unparseable date: "2013-01-09 09:15:02.500000"
at java.text.DateFormat.parse(DateFormat.java:357)
有人知道如何正确处理吗?我可以通过使用格式yyyy-MM-dd HH:mm:ss.SSS
和使用substring
来除去最后三位数字,但那太粗糙了。
编辑:有人能解释一下为什么格式字符串yyyy-MM-dd HH:mm:ss.SSS'000'
不能用于解析时间"2013-01-09 09:15:02.500000"
吗?
.S
,它会解析成5
、500
或500000
,但这会引入时间值的滚动来进行补偿... - MadProgrammer2013-1-9 9:15:2.500
并且它也能正常工作。解析器的工作方式和格式化程序的工作方式略有不同... - MadProgrammer