All,
我知道我之前曾问过类似的问题,关于使用 Java 将 ISO8601 日期字符串解析为日期,但这是使用 SimpleDateFormat 类的更具体的问题。
我读过这篇文章维基 ISO8601 日期 http://en.wikipedia.org/wiki/ISO_8601.
客户向我提供了一个 XML 文件,其中包含以下格式的日期和时间:
2012-08-24T12:15:00+02:00
根据维基文章,这是有效的,而且很公平。
如果使用以下代码来解析此字符串,则会引发 ParseException 并显示消息“无法解析日期:“2012-08-24T12:15:00+02:00””。
String inputDate = "2012-08-24T12:15:00+02:00";
String format = "yyyy-MM-dd'T'HH:mm:ssz";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = sdf.parse(inputDate);
问题出在时区说明符中的冒号。时区中的 +02:00 会导致引发异常。 +0200 工作正常。
问题是,是否可以使用 SimpleDateFormat 解析这种类型的字符串?
Thanks
Andez
不,使用SimpleDateFormat,解析这个日期是不可能的(至少在jdk 6或更低版本中是不可能的)。我们必须自己为此编写自己的适配器。
请注意,由于此格式是 XML 架构的有效部分,因此您可以使用DatatypeConverter.parseDateTime() http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/DatatypeConverter.html#parseDateTime%28java.lang.String%29方法来解析这个日期。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)