<分区>
我正在 Android 上创建一个与服务器通信的应用程序。该服务器返回给我 ISO 8601日期字符串,如下所示:
2014-11-21 12:24:56.662061-02
然后我尝试使用 Java 的 SimpleDateFormatter 来解析我的字符串,如下所示:
Locale l = new Locale("pt","BR");
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSZZ",l).parse(str_date);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(date.getTime());
事实是,这个解决方案部分有效。我能够正确地得到年、月、日和小时,但是当涉及到小时、分钟和秒时,我总是弄错分钟。如果我尝试使用我的示例字符串打印它,我会得到类似于“12:35”而不是“12:24”的内容。我尝试了不同的掩码,使用区域设置,不使用区域设置,但似乎对我没有任何作用。
我在这个link 上看到过SimpleDateFormatter 不能很好地支持 ISO 8601,那个人使用 javax.xml.bind.DatatypeConverter.parseDateTime() 方法给出了一个解决方案,但 Android SDK 上不存在 DatatypeConverter。那么...我该怎么做才能正确解析这个字符串?