无法在索引 33 处解析文本
Text could not be parsed at index 33
我正在使用 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());
我遇到以下错误:
Text '2018-10-20T14:27:47.3949709+03:00' could not be parsed at index
33
提前致谢。
错误信息的解释:
2018-10-20T14:27:47.3949709+03:00
是 33 个字符长,因此
Text '2018-10-20T14:27:47.3949709+03:00' could not be parsed at index 33
意味着它期望第 34 个字符不存在(它的索引为 0)。
问题
您定义 Formatter
的方式将接受 2018-10-20T14:27:47.3949709+03:002018-10-20`
解法:
要克服这个问题,您可以删除 .append(DateTimeFormatter.ofPattern("yyyy-MM-dd")
或者定义一个接受startOptional
和endOptional
两种格式的Formatter
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.optionalStart()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.optionalEnd()
.optionalStart()
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
.optionalEnd().toFormatter();
您可以在 https://ideone.com/RDVHYG
查看示例
旁注:“yyyy-MM-dd”没有为 LocalDateTime
提供足够的信息,因此我添加了“HH:mm”
我正在使用 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());
我遇到以下错误:
Text '2018-10-20T14:27:47.3949709+03:00' could not be parsed at index 33
提前致谢。
错误信息的解释:
2018-10-20T14:27:47.3949709+03:00
是 33 个字符长,因此
Text '2018-10-20T14:27:47.3949709+03:00' could not be parsed at index 33
意味着它期望第 34 个字符不存在(它的索引为 0)。
问题
您定义 Formatter
的方式将接受 2018-10-20T14:27:47.3949709+03:002018-10-20`
解法:
要克服这个问题,您可以删除 .append(DateTimeFormatter.ofPattern("yyyy-MM-dd")
或者定义一个接受startOptional
和endOptional
Formatter
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.optionalStart()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.optionalEnd()
.optionalStart()
.append(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
.optionalEnd().toFormatter();
您可以在 https://ideone.com/RDVHYG
查看示例旁注:“yyyy-MM-dd”没有为 LocalDateTime
提供足够的信息,因此我添加了“HH:mm”