Como verificar se a data é válida de uma maneira simples?

5 respostas
P

Oi pessoal

O GregorianCalendar tem um método setLenient que se estiver falso, ele vai soltar exceções no caso de uma data não ser real, isto é, 31 de fevereiro, -2 de abril, assim por diante.

Mas eu passo false para ele, e depois seto o dia para 333 de 333 de 33333, e ele nem reclama!

import java.util.GregorianCalendar;

public class MalditoGregorianCalendar {
  public static void main(String a[]) {
    GregorianCalendar gc = new GregorianCalendar();
    gc.setLenient(false);
    gc.set(333, 333, 333);
  }
}

Eu poderia fazer IFs, usando o getMaximum(field) e tal, mas queria u jeito bem mais simples, alguem sabe?

5 Respostas

R

Essa funcao eh meio estranha… ela so tem efeito depois que vc setou a data, como mostrado no exemplo abaixo…

import java.util.GregorianCalendar;
import java.util.Calendar;

public class MalditoGregorianCalendar {
	public static void main(String a[]) {
		GregorianCalendar gc = new GregorianCalendar();
		gc.set(333, 333, 333);
		gc.setLenient(false);
		gc.add(Calendar.MONTH, 1);
	}
}

Rafael

R

Ou melhor, a exception nao ocorre na hora de setar a data, mas sim na hora de fazer alguma acao, como abaixo:

import java.util.GregorianCalendar;
import java.util.Calendar;

public class MalditoGregorianCalendar {
	public static void main(String a[]) {
		GregorianCalendar gc = new GregorianCalendar();
		gc.setLenient(false);
		gc.set(Calendar.YEAR, 2000);
		gc.set(Calendar.MONTH, 01);
		gc.set(Calendar.DAY_OF_MONTH, 100);
		
		System.out.println(gc.get(Calendar.YEAR));
	}
}

Rafael

P

é
eu queria uma que tivesse um isValid, ou algo assim

P

e

F

Paulo Silveira:
é
eu queria uma que tivesse um isValid, ou algo assim

Cria um isValid e deixa ele escondido :slight_smile:

Criado 22 de novembro de 2002
Ultima resposta 19 de jul. de 2009
Respostas 5
Participantes 4