Como posso reconhecer o fuso horário Zulu em Java DateUtils.parseDate?
Pergunta
Eu tenho datas no 2008-12-23T00:00:00Z
formato. Este olhar muito como um ISO formato de 8601 com um (UTC) fuso horário Zulu. I embora o seguinte código iria analisá-lo (usando commons-lang ):
String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });
Se eu tomar o mesmo padrão (yyyy-MM-dd'T'HH:mm:ssZZ
), mas remover o fuso horário, ele funciona.
Você sabe como eu posso reconhecer o fuso horário Zulu? Eu tenho acesso apenas para Java 1.4 e Jakarta commons-lang. Sem Joda Tempo para mim ainda ...
Solução
Parece que um bug no FastDateFormat
do commons-lang. Diga-lhes sobre isso, e você deve obter uma correção eventualmente. Até então você pode tentar para pré-processar as datas e substituir 'Z' com '00'
Outras dicas
Eu acho commons-lang está usando Java embutido DateFormat ou SimpleDateFormat que lança um ParseException para a sua data. Se todas as suas cadeias de entrada termina com a Z arrastando, você pode utilizar isto:
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");