Java 如何转换;2014-08-10T06:34:04-0500;简化格式

Java 如何转换;2014-08-10T06:34:04-0500;简化格式,java,android,simpledateformat,Java,Android,Simpledateformat,如何将2014-08-10T06:34:04-0500转换为SimpleDateFormat,我已经尝试过了 new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss-SSSS"), 但它不是这样工作的 编辑。如果有人遇到类似的问题,那么这种模式——“yyyy-MM-dd'T'HH:MM:ssZ”将在Android上起作用 可能在Java 1.7之前版本和Java 1.7-…,使用T.J.Crowder给出的答案。结尾处的-0500不是毫秒(S格式字符),它是一个

如何将
2014-08-10T06:34:04-0500
转换为
SimpleDateFormat
,我已经尝试过了

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss-SSSS"),
但它不是这样工作的

编辑。如果有人遇到类似的问题,那么这种模式——“yyyy-MM-dd'T'HH:MM:ssZ”将在Android上起作用


可能在Java 1.7之前版本和Java 1.7-…,使用T.J.Crowder给出的答案。

结尾处的
-0500
不是毫秒(
S
格式字符),它是一个ISO-8601时区指示器(在Java的当前版本中;注意,它是最近在Java 7中添加的)。
-
是时区指示器的一部分,而不是分隔符,因此您不希望字符串中包含
-

因此:


在Java6和更早版本中,您可以使用
Z
时区格式字符,而不是
X
。但是Java 7是三年前推出的,所以…

Java.lang.IllegalArgumentException:未知模式字符'X'与此模式一起出现的—“yyyy-MM-dd'HH:MM:ssX”与此yyyyy-MM-dd'T'HH:MM:ss'X'-Java.text.ParseException:不可解析的日期:“2014-08-10T05:38:42-0500”(偏移量19)。有什么建议吗?@attels:你有没有读过上面关于
X
是Java 7及以上版本,以及
Z
对于Java 6及以下版本是如何足够的?最后yyyy-MM-dd'T'HH:MM:ssZ为我工作了,谢谢你,T.J。Crowder@attels:我建议仔细检查你的类路径,我认为你有一些过时的JDK jar。Java7的
SimpleDataFormat
肯定有
X
格式说明符。我手头上没有安装Java7,但我知道我在Java8出现之前就已经使用过了。FWIW,这里有一个例子:你能用
x
代替
x
?(这很重要。)我不确定这是否相关,但这是android SimpleDateFormat类文档:。有一行:Z时区(RFC 822)(时区)Z/ZZ/ZZZ:-0800 ZZZZZ:GMT-08:00 ZZZZZ:-08:00,这里没有提到X。
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX")