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!!
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
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?
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”.