我正在使用ThreeTenABP库来解析日期和时间。但是,它崩溃了。我使用的API发送DateTime之类的;
2018-10-20T14:27:47.3949709 + 03:00
这是我尝试解析的方式;
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
.toFormatter();
Timber.d(LocalDateTime.parse("2018-10-20T14:27:47.3949709+03:00", formatter).toString());
我遇到以下错误:
无法在索引处解析文本'2018-10-20T14:27:47.3949709 + 03:00' 33
谢谢。
答案 0 :(得分:2)
错误消息的说明:
2018-10-20T14:27:47.3949709+03:00
长33个字符,因此
无法在索引33处解析文本'2018-10-20T14:27:47.3949709 + 03:00'
表示它预期不存在第34个字符(索引为0)。
问题
您定义Formatter
的方式将接受2018-10-20T14:27:47.3949709 + 03:002018-10-20`
解决方案:
要解决此问题,您可以放下.append(DateTimeFormatter.ofPattern("yyyy-MM-dd")
或定义一个Formatter
并接受startOptional
和endOptional
两种格式
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.optionalStart()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.optionalEnd()
.optionalStart()
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
.optionalEnd().toFormatter();
看到示例
旁注:“ yyyy-MM-dd”不能为LocalDateTime
提供足够的信息,因此我添加了“ HH:mm”