Java:DateTimeFormatter解析具有不同位数的毫秒时间戳

时间:2018-12-29 07:13:47

标签: java datetime-format

我有以下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

解决此问题的有效解决方案是什么?

1 个答案:

答案 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);
    }