Problema Simple Date Format [RESOLVIDO]

3 respostas
W

Boa tarde pessoal,
Sou novo no fórum e estou com uma dúvida, procurei algum problema semelhante nos tópicos, mas infelizmente não encontrei.

Vou simplificar para que fique mais fácil de entender e mais claro.

Estou tentando converter uma data em formato string para date, porém o SimpleDateFormat se comporta de maneira estranha para essa data em específico.

A data a que me refiro é 15/10/2045 (Domingo), ao converte-la e depois imprimir o conteúdo no console a data retornada é 14/10/2045 (Sábado). Isso deixando o setLenient como true, caso eu o coloque como false estoura uma ParseException. Para as demais datas funciona normalmente.

Vejam esse main de exemplo:

public static void main(String[] args) {
	String stringDate = "20451015";

	SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
	
	try {
		System.out.println(format.parse(stringDate));
	} catch (ParseException e) {
		e.printStackTrace();
	}
}

Saída do console:
Sat Oct 14 23:00:00 BRT 2045

Procurei algo referente à isso em outros lugares, documentação do SimpleDateFormat, etc, e nada.
Caso alguém já tenha passado por problema parecido ou possa me ajudar, agradeço!

Obrigado.

3 Respostas

Aledro

William, faz um teste na data, tentando atribuir o timezone GMT-3.

TEC.ER

DateFormat dateFormat = new SimpleDateFormat(“dd/MM/yyyy”);
System.out.println(dateFormat.format(stringDate));

tenta desse jeito para ver.

W

Eureca!
Era a Timezone mesmo Aledro, setei para GMT-3 e agora está funcionando corretamente.

Obrigado aos dois amigos acima.

O Código ficou dessa forma:

public static void main(String[] args) {
	String stringDate = "20491017";

	SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
	TimeZone zone = TimeZone.getTimeZone("GMT-03:00");
	format.setTimeZone(zone);
	
	try {
		System.out.println(format.parse(stringDate));
	} catch (ParseException e) {
		e.printStackTrace();
	}
}

Abraços!

Criado 24 de fevereiro de 2016
Ultima resposta 24 de fev. de 2016
Respostas 3
Participantes 3