java.time.format.DateTimeParseException:无法在索引 24 处解析文本“2016-08-30T06:18:17:698-0600”
java.time.format.DateTimeParseException: Text '2016-08-30T06:18:17:698-0600' could not be parsed at index 24
这是我的 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
这是我的 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