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;
}
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;
}
}