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

2022-09-02 23:09:17

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

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时间对我来说...


答案 1

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

答案 2

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