【发布时间】:2012-08-30 10:00:02
【问题描述】:
如果这是我正在做的一个非常愚蠢的错误,我很抱歉,但我似乎看不到它。我在尝试使用 SimpleDateFormat 解析 2012-08-28T21:52:57.020Z 时遇到不可解析的日期异常,格式字符串为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”。谁能指出问题所在。
【问题讨论】:
标签: java simpledateformat
如果这是我正在做的一个非常愚蠢的错误,我很抱歉,但我似乎看不到它。我在尝试使用 SimpleDateFormat 解析 2012-08-28T21:52:57.020Z 时遇到不可解析的日期异常,格式字符串为“yyyy-MM-dd'T'HH:mm:ss.SSSZ”。谁能指出问题所在。
【问题讨论】:
标签: java simpledateformat
我不认为 SimpleDataFormat 将解析字符串中的“Z”解析为时区。 :( 它只在格式中以Z 作为查找时区的位置。
尝试"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 格式或尝试更好地处理时区的JodaTime。
【讨论】:
Z 是可以的,而解析的字符串中有一个Z 不是。解决方法是假设解析的字符串中有Z。
最后的“Z”对应时区。您应该将输入中的“Z”替换为时区 ID,例如 IST/EST 等,
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String date = "2012-08-28T21:52:57.020IST";
System.out.println(df.parse(date));
output: Tue Aug 28 21:52:57 IST 2012
【讨论】:
Z 是时区。与 GMT 或 GMT+0 或 +0000 相同,其中 SimpleDateFormat 仅解析 GMT。