Java 将GMT字符串解析为本地

Java 将GMT字符串解析为本地,java,Java,我有一个date=2011-04-17T22:02:00.001-07:00,我正在使用SDF进行解析 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); formatter.parse(date) 我认为它不支持-07:00,但-0700可以工作。格式中应该更改哪些内容?请查看: 它专门讨论了这个问题。似乎SimpleDateFormat不支持ISO8601时区格式。如果您确定您的

我有一个
date=2011-04-17T22:02:00.001-07:00
,我正在使用SDF进行解析

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
formatter.parse(date)
我认为它不支持-07:00,但-0700可以工作。格式中应该更改哪些内容?

请查看:


它专门讨论了这个问题。

似乎
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允许一些变体,而这些变体不起作用。

尝试使用它可能会对您有所帮助。我真的不想只为了简单的解析而使用api。