这是我用于此日期字符串java8
的"2016-08-30T06:18:17:698-0600"
代码
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-DD'T'HH:mm:ss:SSS'-'XXX");
String attDate = "2016-08-30T06:18:17:698-0600";
//attDate = attDate.substring(0, 19);
System.out.println("####attask date: "+attDate);
LocalDateTime dt = LocalDateTime.parse(attDate, formatter);
System.out.println(dt);
将
LocalDate
与截短的日期字符串一起使用将解决此问题,但我不能简单地删除Time
并使用LocalDate
而不是LocalDateTime
请在这里提出问题。我还需要说明为什么您的答案会起作用。
最佳答案
如果将图案更改为yyyy-MM-dd'T'HH:mm:ss.SSSZ
,它将打印2016-08-30T06:18:17.123
。
但是在您的代码中,当正确的是:
时,日期以.
为单位(以毫秒为单位)。
完整的代码:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String attDate = "2016-08-30T06:18:17.123-0600";
//attDate = attDate.substring(0, 19);
System.out.println("####attask date: "+attDate);
LocalDateTime dt = LocalDateTime.parse(attDate, formatter);
System.out.println(dt);
输出:
####attask date: 2016-08-30T06:18:17.123-0600
2016-08-30T06:18:17.123
关于java - java.time.format.DateTimeParseException:无法在索引24处解析文本'2016-08-30T06:18:17:698-0600',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42961507/