解析GMT字符串当地

问题描述:

我有一个date = 2011-04-17T22:02:00.001-07:00,我使用SDF解析GMT字符串当地

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
formatter.parse(date) 

我它不支持-07解析:00,但-0700作品。格式中应该改变什么?

+0

尝试使用[TimeZone](http://download.oracle.com/javase/6/docs/api/java/util/TimeZone.html)它可能会帮助你。 – 2011-04-18 05:31:35

看来SimpleDateFormat不支持ISO8601时区格式。如果您确定知道您的时区始终以-##:##(或+##:##)的格式结尾,那么您可以删除最后的:,以便您现有的格式化程序正常工作。例如。这解析你的日期:

String input = "2011-04-17T22:02:00.001-07:00"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date date = sdf.parse(input.replaceAll(":(..)$", "$1")); 

但要小心,但显然ISO8601允许一些变化,这将无法正常工作。

看看:

Converting ISO 8601-compliant String to java.util.Date

它谈论这个问题专门..

+0

我真的不想使用api只是为了简单的解析。 – Taranfx 2011-04-18 17:03:36