将GMT字符串解析为本地

时间:2011-04-18 05:09:44

标签: java

我正在使用SDF解析date = 2011-04-17T22:02:00.001-07:00

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

我不支持-07:00但-0700有效。什么应该改变格式?

2 个答案:

答案 0 :(得分: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允许一些不同的变化。

答案 1 :(得分:1)

看看:

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

具体谈到这个问题..