2011-04-18 50 views
1

我有一個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

回答

2

看來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允許一些變化,這將無法正常工作。