我正在尝试格式化时间/日期字符串:
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.
我不明白为什么我会收到这个错误,有人可以解释一下吗?
答案 0 :(得分:4)
问题在于TimeZone信息。 ':'是时区字符串中的非法字符。请参阅http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#rfc822timezone和http://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的内置日期处理并不是那么好。