【问题标题】:Java: DateTimeFormatter parse milliseconds timestamp with different number of digits [duplicate]Java:DateTimeFormatter解析具有不同位数的毫秒时间戳[重复]
【发布时间】:2018-12-29 07:13:47
【问题描述】:

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

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

【问题讨论】:

标签: java datetime-format


【解决方案1】:

你可以得到日期的长度

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2019-08-01
    • 2015-06-17
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多