BUG do SimpleDataFormat?

3 respostas
P

Boa tarde pessoal!!! :grin:

Toh cum problema chato ak… Tenho o seguinte código

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(sdf.parse(str));

Onde str é uma string recebida como parâmetro… O problema é que o parse tá aceitando valores como “2512-200-5”, “251-2-2005”, “25122-005”, “251220-0-5” e qualquer outro valor maluco desde que não fique em nenhum ponto assim “–” sem dar nenhuma espécie de erro… Retornando valores como 16/08/31, etc… Existe alguma forma rápida e indolor de verificar se a string informada está de acordo com o formato desejado (‘yyyy-MM-dd’)??

Vlw pessoas!!!
Abs
Patty

3 Respostas

J

Veja o metodo setLenient nas docs dessa classe.

valeuz…

F

cara, talvez nao seja a maneira mas elegante, mas pensando asssim por cima pode funcionar,
tu define um mascara numerica e tenta ver se consegue fazer o parse antes…
tipo o codigo abaixo

String strMask = "####-##-##";
	MaskFormatter mask = new MaskFormatter(strMask);
	    	    	
	String str = "2000-011-2";
	mask.stringToValue(str);
	    	
	DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	System.out.println(sdf.parse(str));
J

Essa mascara permite que vc passe dados como 9999-99-99 que é o que ela quer evitar. Usem o setLenient, ele serve para isso!

valeuz…

Criado 26 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 3
Participantes 3