[RESOLVIDO] Validar data no formato ano/mes/dia

4 respostas
R

Boa tarde
Preciso de ajuda para validar um campo data e nao estou conseguindo, pode ser usando expressoes regulares ou qualquer outra coisa, gostaria que me explicassem tambem se possivel, que nao adianta nada me passar a soluçao direto, apesar de resolver aparentemente o problema.

Quero entender mesmo como validar o campo data no formato que citei

tentei isso:

public static void main(String[] args){

                String teste3 = "20050902 - testando data no formato ano/mes/dia";
		Pattern pattern3 = Pattern.compile("[^\d{4}(0[0-9]|1[0,1,2])([0,1,2][0-9]|3[0,1])$]*"); // nao sei como montar essa expressao, encontrei essa na internet 
		Matcher matcher3 = pattern3.matcher(teste3.substring(0,8)); 
		
		if (matcher3.matches()) {
			System.out.println(matcher3.group() + " data valida");
		}else {
			System.out.println("erro na data");
		}
}

Preciso muito de ajuda para fazer isso
aguardo respostas

--------------------SOLUÇÃO------------------------------

import java.text.ParseException;

public static void main(String[] args) throws java.text.ParseException{
		String texto = "20110802";
		
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
			sdf.setLenient(false);
			try {
				sdf.parse(texto);
				System.out.println("Data esta certa");
			}
			catch (ParseException ex) {
				System.out.println("Data errada");
				ex.getMessage();
		}
	}

4 Respostas

A

Mas é pra validar um campo que só terá a data?

Ou tem que achar a data em qualquer lugar do campo?

No primeiro caso um SimpleDateFormat já faz o trabalho… dá uma olhada nessa classe.

R

vou dar uma conferida nessa classe

poderia postar um exemplo ai para me explicar?

Se tivesse q procurar em uma linha a data como q seria? so a titulo de curiosidade mesmo…

----------------------EDITANDO-------------------------

eu consegui fazer isso

public static void main(String[] args) throws java.text.ParseException{
		String texto = "20110802";
		
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
			sdf.setLenient(false);
			try {
				sdf.parse(texto);
				System.out.println("Data esta certa");
			}
			catch (ParseException ex) {
				System.out.println("Data errada");
				ex.getMessage();
		}
}

so q se eu colocar uma data invalida ele da esses erros, e eu nao consegui resolver:

esse é colocando uma letra no meio da data:

Exception in thread main java.text.ParseException: Unparseable date: 2a110802

at java.text.DateFormat.parse(Unknown Source)

at validador.Validador.main(Validador.java:7)

esse segundo é colocando uma data invalida:

Exception in thread main java.text.ParseException: Unparseable date: 20119802

at java.text.DateFormat.parse(Unknown Source)

at validador.Validador.main(Validador.java:7)

Alguem ai consegue me ajudar?

R

alguem poderia me ajudar com a ultima msg q postei

R

podem fechar o topico consegui resolver o problema para validar a data

depois de uns 4 dia procurando uma soluçao, oq me faltava era um simples import, arghhhh

eu tava importando isso(esse import foi automatico quando clica no eclipse para ele fazer):

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

no lugar deste(esse eu encontrei e fui comparar com oq eu estava usando para ver se nao faltava nada, so entao q notei o erro):

import java.text.ParseException;
Que é o correto

ai consegui perceber o erro vendo uns exemplos pela internet

obrigado a todos q ajudaram
e fica ai a dica para alguem q precise validar data como eu estava precisando

vlw

Criado 11 de fevereiro de 2011
Ultima resposta 14 de fev. de 2011
Respostas 4
Participantes 2