我在文本文件的字符串中有这样的日期:String string = 2014-10-03 00:58:59.765
所以我这样解析:
Date timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.parse(string);
然而,有些时间戳的毫秒数少于3位,我得到一个ParseException试图对它们使用相同的SimpleDateFormat。编辑:当毫秒为000时发生。示例:java.text.ParseException: Unparseable date: "2014-10-03 00:59:49"
这是我的工作:
if (string.length() == 23) {
timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.parse(string);
} else if (string.length() == 22) {
timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS")
.parse(string);
} else if string.length() == 21) {
timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS")
.parse(string);
} else if (string.length() == 19) {
timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(string);
}
有没有更好的方法呢?
答案 0 :(得分:1)
您可以在包含.
的字符串中SSS
的帮助下做出决定并注意它并不总是安全的,所以要小心,因为SSS
它可以解析.767
,.76
,.7
毫秒。
Date timestamp = null;
if(string.contains(".")) {
timestamp =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
.parse(string);
} else {
timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(string);
}
System.out.println(timestamp);
请注意,如果您使用.76
解析 milisecond .SSS
而不是检索,则必须使用.SS
对其进行格式化,否则会返回.076
.76
同样的事情发生在其他地方。所以,小心!