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 ...

Foi útil?

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");

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top