Olá devs, gostaria de saber como verificar se uma data inserida pelo usuário existe no calendário. Por exemplo: “30/02/2020” (false), “37/15/2015” (false), “31/11/2020”(false), 01/02/1999(true).
Existência de data no calendário
10 Respostas
Veja um exemplo usando LocalDate:
private static boolean isDateValid(String date) {
try {
DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("dd/MM/uuuu")
.withResolverStyle(ResolverStyle.STRICT);
LocalDate.parse(date, formatter);
return true;
} catch (DateTimeException ex) {
return false;
}
}
Tentei desse jeito, só que na minha Exceção quando eu coloco uma data válida, retorna uma mensagem de data inválida.
Qual data válida vc passou que retornou como inválida?
Qualquer data válida ele retorna a mensagem como inválida
Troca o pattern "dd/MM/uuuu" por "dd/MM/yyyy".
Tá do mesmo jeito.
if( == false)ValidarData.isDateValid(data)
throw erro;
Tente apenas assim:
if (!ValidarData.isDateValid(data)) {
throw erro;
}
Vou te dar uma dica: sempre que vc diz que algo “não funciona” ou “deu erro”, vc tem que dar todas as informações necessárias para as pessoas te ajudarem e não dependerem de adivinhações.
O que tem na variável data? Como ela foi inicializada? Você colocou um valor fixo? Leu do teclado (e nesse caso, qual foi o valor digitado)? Etc…
Se deu alguma mensagem de erro, qual foi?
Chute: você tentou usar isso em outra classe? Se foi, tem que trocar o método de private para public (mas é só um chute, como faltam informações, pode ser qualquer outra coisa).
E como já dito acima, valores booleanos não precisam ser comparados com true ou false, você pode testar direto:
if (! ValidarData.isDateValid(data)) {
// se retornou false, entra aqui
}
O ! é o operador de negação, então se o método retorna false, o ! transforma em true e ele entra no if. Também poderia ser sem o !:
if (ValidarData.isDateValid(data)) {
// data válida
} else {
// data inválida
}
Mas como eu já disse, sem mais detalhes, não dá pra saber porque não funcionou…