Java 日期格式错误,为“0”;2011-07-27T06:41:11+;00:00“;

Java 日期格式错误,为“0”;2011-07-27T06:41:11+;00:00“;,java,date,date-format,simpledateformat,Java,Date,Date Format,Simpledateformat,我正在尝试格式化时间/日期字符串: String date = "2011-07-27T06:41:11+00:00"; DateFormat formatter = new SimpleDateFormat("yyyy MM-dd'T'HH:mm:ssz"); //2011-07-27T06:41:11+00:00 Date Sdate = formatter.parse(date.toString()); 这是抛出错误 unable to parse newDate. 我不明白为什么会出

我正在尝试格式化时间/日期字符串:

String date = "2011-07-27T06:41:11+00:00";
DateFormat formatter = new SimpleDateFormat("yyyy MM-dd'T'HH:mm:ssz"); //2011-07-27T06:41:11+00:00
Date Sdate = formatter.parse(date.toString());
这是抛出错误

unable to parse newDate.

我不明白为什么会出现这个错误,有人能解释一下吗?

问题在于时区信息。“:”是时区字符串中的非法字符。看到和

以下字符串是可分析的

String date = "2011-07-27T06:41:11+0000";

删除“:”后,代码将正常工作。

问题在于时区信息。“:”是时区字符串中的非法字符。看到和

以下字符串是可分析的

String date = "2011-07-27T06:41:11+0000";

删除“:”后,代码将正常工作。

SimpleDataFormat不接受所有ISO8601日期时间格式

您可以在JAXB中使用DatatypeConverter.parseDateTime

差不多

String date = "2011-07-27T06:41:11+00:00";
Date Sdate = DatatypeConverter.parseDateTime(date).getTime();

请务必遵循约定(变量名称应以小写开头)

SimpleDataFormat不接受所有ISO8601日期时间格式

您可以在JAXB中使用DatatypeConverter.parseDateTime

差不多

String date = "2011-07-27T06:41:11+00:00";
Date Sdate = DatatypeConverter.parseDateTime(date).getTime();

请务必遵循约定(变量名称应以小写开头)

请尝试JodaTime。Java内置的日期处理不是很好。

试试JodaTime。Java的内置日期处理不是很好。

使用分号怎么样?答案是String newDate=“2011-07-27T06:41:11+00:00”;DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”)//2011-07-27T06:41:11+00:00日期Sdate=formatter.parse(newDate.toString());这是因为无法分析newDate。请建议..@reporter:我认为我们不应该通过编辑来消除代码中的语法错误。使用分号怎么样?答案是String newDate=“2011-07-27T06:41:11+00:00”;DateFormat格式化程序=新的SimpleDataFormat(“yyyy-MM-dd'HH:MM:ssz”)//2011-07-27T06:41:11+00:00日期Sdate=formatter.parse(newDate.toString());这是因为无法分析newDate。请建议..@reporter:我认为我们不应该通过编辑来删除代码中的语法错误。不,我必须解析那个日期。。。我们从提要中获取此日期值。在传递给格式化程序之前,您需要使用字符串替换来删除无关的“:”。@Cintu:您可以使用正则表达式来格式化符合SimpleDataFormat模式的日期。@Cintu:那么您做得不对。“不工作”是关于任何给定问题的最少信息量。我现在正在使用这段代码,它正在工作。。。我能解析。。日期=(date.replace('T','').replace(“+”,“######”).split(“#######””[0]格式化程序=新的简化格式(“yyyy-MM-dd HH:MM:ss”);不,我必须解析那个日期。。。我们从提要中获取此日期值。在传递给格式化程序之前,您需要使用字符串替换来删除无关的“:”。@Cintu:您可以使用正则表达式来格式化符合SimpleDataFormat模式的日期。@Cintu:那么您做得不对。“不工作”是关于任何给定问题的最少信息量。我现在正在使用这段代码,它正在工作。。。我能解析。。日期=(date.replace('T','').replace(“+”,“######”).split(“#######””[0]格式化程序=新的简化格式(“yyyy-MM-dd HH:MM:ss”);