Java SimpleDataFormat ParseException:不可解析的日期错误

Java SimpleDataFormat ParseException:不可解析的日期错误,java,android,simpledateformat,Java,Android,Simpledateformat,我正在从XML解析此日期格式:=>“2011-12-06T07:41:14.016+00:00”,我得到以下错误: W/System.err(574):java.text.ParseException:不可解析的日期: “2011-12-06T07:41:14.016+00:00” 我肯定这是我正在使用的格式化语句,但我不知道它应该是什么 以下是我使用的声明: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss

我正在从XML解析此日期格式:=>“2011-12-06T07:41:14.016+00:00”,我得到以下错误:

  • W/System.err(574):java.text.ParseException:不可解析的日期: “2011-12-06T07:41:14.016+00:00”
我肯定这是我正在使用的格式化语句,但我不知道它应该是什么

以下是我使用的声明:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ:ss");
我知道如何为这部分创建格式:“2011-12-06T07:41:14…”,这是另一部分:=>“.016+00:00”,这让我感到困惑

我已经在这里寻找答案了:,在这里,但我担心我遗漏了一些基本的东西

对于特定日期格式的格式声明或相关资源,您是否有任何建议

非常感谢

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"    2001-07-04T12:08:56.235-0700
结尾的:ss看起来不正确

因为“Z”模式匹配+0000而不是+00:00,所以如果在解析之前删除最后一个“:”,那么它将工作

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ");
try {
  Date myDate = sdf.parse( "2011-12-06T07:41:14.016+00:00".replaceAll( "([0-9\\-T]+:[0-9]{2}:[0-9.+]+):([0-9]{2})", "$1$2" ) );
  System.out.println( myDate );
} catch (ParseException e) {
  e.printStackTrace();
}

正如我链接的问题中的一个答案所示,您可以使用

String string = "2011-12-06T07:41:14.016+00:00";
Calendar cal = DatatypeConverter.parseDateTime(string);

你应该看看这个相关的问题!你太棒了!:-)这让我摆脱了困境。。。非常感谢!现在有另一种方法来进行日期解析,可以更好地处理日期格式的可变性。我看起来有一些,但它们很笨重。