日期格式错误“2011-07-27T06:41:11 + 00:00”

时间:2011-07-27 07:49:41

标签: 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.

我不明白为什么我会收到这个错误,有人可以解释一下吗?

3 个答案:

答案 0 :(得分:4)

问题在于TimeZone信息。 ':'是时区字符串中的非法字符。请参阅http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#rfc822timezonehttp://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#timezone

以下字符串是可解析的

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

删除':',您的代码就可以使用。

答案 1 :(得分:1)

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

您可以在JAXB中使用DatatypeConverter.parseDateTime。

类似

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

请尝试遵循约定(变量名称应以小写字母开头)

答案 2 :(得分:0)

试试JodaTime。 Java的内置日期处理并不是那么好。