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
[RESOLVIDO ] Validação de Data
R
8 Respostas
J
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!
R
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
S
Solucao aceita
1 like
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;
}
R
Desculpe mais teria como me explicar o que faz cada linha
Desde já agradeço muito
Obrigado
S
Editei minha resposta lá em cima, dá uma olhada, acho que ficou um pouco melhor de entender.
R
Muito Obrigado Ajudou muito
J
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner leia = new Scanner(<a href="http://System.in">System.in</a>);
//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);
}
}
J
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;
}
}
Criado 2 de dezembro de 2016
Ultima resposta 10 de nov. de 2017
Respostas 8
Participantes 4