DateTimeParseException通过解析日期字符串

时间:2018-07-10 06:15:51

标签: java datetime parsing java-time datetime-parsing

我正在尝试使用Java OffsetDateTime解析日期字符串,但出现异常。

字符串如下:"20101217180000GMT+0800"

我的方法如下:

OffsetDateTime.parse("20101217180000GMT+0800", DateTimeFormatter("yyyyMMddHHmmssz"));

我得到:

  

java.time.format.DateTimeParseException:....在索引17处找到未分析的文本

有什么想法吗? :)

2 个答案:

答案 0 :(得分:3)

您在那里基本上有两个区域说明符:

  • GMT
  • +0800

如果您打印从索引17开始的时间的子字符串,错误发生的位置,您将得到+0800,因此它消耗了GMT并且不知道该怎么做其余的。

我建议将GMT当作文字,即用单引号引起来,然后使用Z(或X,这取决于您要如何使用GMT + 0(如果有)):

yyyyMMddHHmmss'GMT'Z

Ideone demo

答案 1 :(得分:1)

请尝试

OffsetDateTime.parse("20101217180000GMT+0800",DateTimeFormatter.ofPattern("yyyyMMddHHmmsszx"));

这可能有效。 但是我在考虑区域冲突和抵消冲突。