我有一个字符串日期“2010-12-15T16:26:49.841-08:00”,我需要将其转换为Java中的GregorianCalendar。你怎么做到这一点?
Jesper 的回答的解决方案
使用joda时间的解决方案代码:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").withOffsetParsed();
DateTime date = formatter.parseDateTime("2010-12-15T16:26:49.841-08:00");
不幸的是,标准SimpleDateFormat
类无法处理ISO 8601 格式 http://en.wikipedia.org/wiki/ISO_8601很好。具体来说,它无法处理:
这是最后的时区偏移量。
您可以做的就是手动删除:
从时区偏移量开始,这样你就会得到一个如下所示的字符串:
2010-12-15T16:26:49.841-0800
(请注意,时区偏移量是-0800
代替-08:00
)。然后你可以用它来解析它SimpleDateFormat
与格式yyyy-MM-dd'T'HH:mm:ss.SSSZ
.
但最好还是用流行的乔达时间 http://joda-time.sourceforge.net/处理时间和日期的库;它比标准 Java API 日期和日历类要好得多,并且可以正确处理 ISO 8601 格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)