Como bloquear datas?

3 respostas
D

Tenho o seguinte código:

[color=blue]class Data {

int dia;

int mes;

int ano;

}
class Funcionario {

private String nome;

private String depto;

private double salario;

private Data dataEntrada = new Data();

private String rg;

private boolean contratado;

//atributo estático

private static int identificador;

//…

public void setData(int dia, int mes, int ano) {

this.dataEntrada.dia = dia;

this.dataEntrada.mes = mes;

this.dataEntrada.ano = ano;

}

//…

}[/color]

Como faço para garantir que datas como 31/2/2005 não sejam aceitas?

Obrigado!!

3 Respostas

rodrigo_gomes

Olá,

Use SimpleDateFormat, como por exemplo:

...
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
     String data = "31/02/2006";
	
	try {
		sdf.setLenient(false);
		sdf.parse(data);
	} catch (ParseException e) {
		System.out.println("Data invalida!!");
                e.printStackTrace();
        }
...

[]´s
Rodrigo

D

Obrigado Rodrigo!!

Na verdade, estou seguindo a apostila da Caelum. Sou iniciante em Java, e acredito que o código que me passou é um pouco mais avançado. Teria uma outra forma mais simples de resolver este problema?

T

O “mais simples” é realmente assim.

Se você está querendo aprender Java, no entanto, provavelmente você vai ter de fazer um pouco de lógica (ou seja, separar a data em dia, mês e ano, verificar se há 31 dias se o mês for janeiro, março, maio, etc, ou se há 28 dias se for fevereiro de um ano não-bissexto, etc. Dá trabalho (principalmente porque você vai ter de achar a fórmula que diz quando um ano é bissexto) mas não envolve usar nenhuma “Exception”.

Criado 2 de outubro de 2006
Ultima resposta 2 de out. de 2006
Respostas 3
Participantes 3