我如何识别Java DateUtils.parseDate中的祖鲁时区?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (64)

我有格式的日期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。没有Joda时间,我还没有...

提问于
用户回答回答于

看起来像commons-lang的一个bug FastDateFormat。告诉他们这件事,最终你应该得到解决。直到那时你可以尝试预处理日期并用'+00'替换'Z'

用户回答回答于

我认为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");

扫码关注云+社区