[RESOLVIDO ] Validação de Data

Galera preciso muito de uma ajuda eu tenho uma Data em String como eu posso fazer uma validação dela desde já agradeço com urgência fazendo favor
Obrigado

Boa tarde!

Qual o tipo de validação que você quer fazer com a data?
Descreva melhor qual o problema que você está tendo pra galera poder entender e te ajudar da melhor maneira possível!

Desde já te agradeço jonathan

eu tenho no banco um string chamada data mais no netbeans desktop
eu preciso fazer uma validação de data de nascimento e uma validação de data para que não aceite datas futuras

public boolean data(String data) {
        try {
            //SimpleDateFormat é usada para trabalhar com formatação de datas
            //neste caso meu formatador irá trabalhar com o formato "dd/MM/yyyy"
            //dd = dia, MM = mes, yyyy = ano
            //o "M" dessa String é maiusculo porque "m" minusculo se n me engano é minutos
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            //a mágica desse método acontece aqui, pois o setLenient() é usado para setar
            //sua escolha sobre datas estranhas, quando eu seto para "false" estou dizendo
            //que não aceito datas falsas como 31/02/2016
            sdf.setLenient(false);
            //aqui eu tento converter a String em um objeto do tipo date, se funcionar
            //sua data é valida
            sdf.parse(data);
            //se nada deu errado retorna true (verdadeiro)
            return true;
        } catch (ParseException ex) {
            //se algum passo dentro do "try" der errado quer dizer que sua data é falsa, então,
            //retorna falso
            return false;
        }
    }

O código acima valida se a data em String é válida, para testar se uma data não é maior que a data de hoje, faça assim (Java 8)

public boolean dataMenorQueHoje(String data) {
        //DateTimeFormatter tem uma função identica ao SimpleDateFormatter, mas escolhi usar ele
        //pois ele trabalha junto com o LocalDate que facilita muito trabalhar com datas
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        //Aqui eu converto uma data em LocalDate e digo que quero no formato do DateTimeFormatter
        //que criei acima
        LocalDate dataVerificada = LocalDate.parse(data, dtf);
        //Esse comando pega a data de hoje
        LocalDate hoje = LocalDate.now();
        //Se dataVerificada comparada com hoje é menor ou igual a zero então retorna verdadeiro,
        //senão, retorna falso
       // com LocalDate não tem como comparar assim: data1 < data2
       //Tem que ser assim: data1.compareTo(data2)
       //quando a data1 é menor isso retorna -1, quando é maior retorna 1, e quando é igual retorna 0
       //por isso eu comparei com <=0 abaixo
        return dataVerificada.compareTo(hoje) <= 0;
    }
1 curtida

Desculpe mais teria como me explicar o que faz cada linha
Desde já agradeço muito
Obrigado

Editei minha resposta lá em cima, dá uma olhada, acho que ficou um pouco melhor de entender.

Muito Obrigado Ajudou muito

import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner leia = new Scanner(System.in);

    //DECLARAÇÃO DE VARIÁVEIS
    byte dia;
    byte mes;
    int ano;
    String data;
    
    //ENTRADA DE DADOS
    System.out.print("Digite o dia: ");
    dia = leia.nextByte();
    System.out.print("Digite o mês: ");
    mes = leia.nextByte();
    System.out.print("Digite o ano: ");
    ano = leia.nextInt();
    
    //PROCESSAMENTO
    if(dia>0 && dia<32 && mes>0 && mes<13 && ano>0 && ((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) || ((mes==4 || mes==6 || mes==9 || mes==11) && dia<=30) || (mes==2 &&(dia<=29 && ano%4==0 && (ano%100!=0 || ano%400==0))|| dia<=28))){
        data="DATA VÁLIDA";
    }else{
        data="DATA INVÁLIDA";
    }
    
    //SAÍDA DE DADOS
    System.out.println(+dia+"/"+mes+"/"+ano+" "+data);
}

}

public class Data {
private byte dia;
private byte mes;
private int ano;

public byte getDia() {
    return dia;
}

public void setDia(byte dia) {
    this.dia = dia;
}

public byte getMes() {
    return mes;
}

public void setMes(byte mes) {
    this.mes = mes;
}

public int getAno() {
    return ano;
}

public void setAno(int ano) {
    this.ano = ano;
}

public boolean validarData() {
    return this.dia > 0 && this.dia < 32 && this.mes > 0 && this.mes < 13 && this.ano > 0 && ((this.mes == 1 || this.mes == 3 || this.mes == 5 || this.mes == 7 || this.mes == 8 || this.mes == 10 || this.mes == 12) || ((this.mes == 4 || this.mes == 6 || this.mes == 9 || this.mes == 11) && this.dia <= 30) || (this.mes == 2 && (this.dia <= 29 && this.ano % 4 == 0 && (this.ano % 100 != 0 || this.ano % 400 == 0)) || this.dia <= 28));
}

@Override
public String toString() {
    return dia + "/" + mes + "/" + ano;
}

}