17

我有格式的日期2008-12-23T00:00:00Z。这看起来很像带有 Zulu (UTC) 时区的ISO 8601 格式。我虽然下面的代码会解析它(使用commons-lang):

String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });

如果我采用相同的模式 ( yyyy-MM-dd'T'HH:mm:ssZZ) 但删除时区,它会起作用。

你知道我怎么能认出祖鲁时区吗?我只能访问 Java 1.4 和 Jakarta commons-lang。我还没有乔达时间......

4

2 回答 2

48

我认为 commons-lang 正在使用 java 的内置 DateFormat 或 SimpleDateFormat ,它会为您的日期抛出 ParseException 。如果所有输入字符串都以尾随 Z 结尾,则可以使用以下命令:


java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
// explicitly set timezone of input if needed
df.setTimeZone(java.util.TimeZone.getTimeZone("Zulu"));
java.util.Date date = df.parse("2008-12-23T00:00:00Z");

于 2009-01-08T15:31:50.043 回答
4

看起来像 commons-lang's 中的错误FastDateFormat。告诉他们,你最终应该得到修复。在此之前,您可以尝试预处理日期并将“Z”替换为“+00”

于 2009-01-08T15:06:39.923 回答