我有以下DateTimeFormatter
代码
DateTimeFormatter sysDateFmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
时间戳的一个示例是2018-09-04 09:16:11.305
。毫秒为3位数字。下面的代码来解析时间戳就可以了。
LocalTime.parse("2018-09-04 09:16:11.305", sysDateFmt)
但是,有时我遇到的时间戳的毫秒部分只有2位数字,即2018-09-12 17:33:30.42
。这就是我遇到以下错误的地方。
Exception in thread "main" java.time.format.DateTimeParseException: Text '2018-09-12 17:33:30.42' could not be parsed at index 20
解决此问题的有效解决方案是什么?
答案 0 :(得分:0)
您可以获得日期的长度
String a = "2018-09-04 09:16:11.305"; //length = 23
String b = "2018-09-04 09:16:11.30"; //length = 22
然后
String date = null;
DateTimeFormatter sysDateFmt23 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
DateTimeFormatter sysDateFmt22 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS");
if (date.length() == 23){
LocalTime.parse(date, sysDateFmt23);
} else if (date.length() == 22){
LocalTime.parse(date, sysDateFmt22);
}