【发布时间】:2014-04-09 04:09:33
【问题描述】:
我在解析2013-01-09 09:15:03.000000 格式的Java 时间字符串时遇到问题。在我的数据中,最后三位数字始终为 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 来摆脱最后三位数字,但这真的很hacky。
编辑:谁能解释为什么格式字符串yyyy-MM-dd HH:mm:ss.SSS'000'不能用于解析时间"2013-01-09 09:15:02.500000"
【问题讨论】:
-
我能看到的最大问题是解析器不关心出现的位数(按说),所以你可以
.S它会解析5,500或500000,但这会引入滚动时间值来补偿... -
@MadProgrammer,是否意味着如果我传入一个字符串
"2013-01-09 09:15:02.5,它会将其解析为 5 毫秒而不是 500 毫秒?这真是愚蠢。 -
也许是这样,但它确实使它变得灵活,所以你也可以将它传递给
2013-1-9 9:15:2.500,它会起作用。解析的工作方式和格式化程序的工作方式略有不同......
标签: java