Harp Singer Posted March 24, 2013 Report Share Posted March 24, 2013 Estimados, he tenido un problemón implementando un método para validar fechas con un compañero. Resulta que al ingresarla en un formulario hecho con Swing (bueno, en un JTextField rasquita xD), no me arroja error si coloco una fecha nada que ver, como por ejemplo 32/10/99999 y bueno, como mi compañero se encarga de hacer andar el JTextField de modo que funcione con el método, yo aún no aprendo a hacerlo aunque lo intente :pena: Este es el método que quise implementar con mi compañero: package valempresa2; import javax.swing.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * * @author Run.EXE */ //Validador fecha public class fechaval extends ValEmpresa2{ public void fecha(){ try { //String dia = null; SimpleDateFormat dateFormat = new SimpleDateFormat("DD/MM/YYYY"); dateFormat.setLenient(false); //Para que reclame cuándo una fecha está mala String dia = null; Date fecha = dateFormat.parse(dia); JOptionPane.showMessageDialog(null,"Fecha válida: "+fecha.toString()); } catch (ParseException e) { JOptionPane.showMessageDialog(null,"Fecha no válida"); } } } } Y el código en donde debemos echar a andar este método (o sea, donde debemos poner todo el show del ingreso del dato en cuestión, cosa que quiero aprender:) private void fnTextActionPerformed(java.awt.event.ActionEvent evt) { } Saludos, y gracias de antemano, si mi consulta es algo estúpida, perdónenme ;_; Link to comment Share on other sites More sharing options...
xomarx69 Posted March 25, 2013 Report Share Posted March 25, 2013 Hola amigo, trate usando expresiones regulares.Saludos Link to comment Share on other sites More sharing options...
_Romiii_ Posted March 25, 2013 Report Share Posted March 25, 2013 Hola amigo, trate usando expresiones regulares.Saludos+1,Aqui hay un link que te puede ayudar:http://sergiorazza.blogspot.com/2010/07/validacion-de-fechas-con-expresiones_11.html Con esas expresiones solo tienes que aplicar un match (matches en java, creo?) con lo que ingreses en el input y la expresión en cuestión. Saludos! Link to comment Share on other sites More sharing options...
AshWilliams Posted March 25, 2013 Report Share Posted March 25, 2013 import java.text.SimpleDateFormat; import java.text.ParseException; public class DateTest { public boolean isValidDate(String inDate) { if (inDate == null) return false; //set the format to use as a constructor argument SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); if (inDate.trim().length() != dateFormat.toPattern().length()) return false; dateFormat.setLenient(false); try { //parse the inDate parameter dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } public static void main(String[] args) { DateTest test = new DateTest(); System.out.println(test.isValidDate("2004-02-29")); System.out.println(test.isValidDate("2005-02-29")); } } Muy fácil de implementar...cuéntame en que parte estás topando ;) Saludos :krider: Link to comment Share on other sites More sharing options...
Harp Singer Posted March 26, 2013 Author Report Share Posted March 26, 2013 Chicos, perdonen por la tardanza de la respuesta, pero ¿cómo las expresiones regulares en Java me podrían ayudar en esta validación? Siendo que deseo obviamente validar un string de fechas haha.Y @AshWilliams, nosotros topábamos en que no podíamos echar a andar el código de la validación en nuestro JTextField para validar las fechas... Vamos a intentar con tu código y luego responderemos qué pasa ;) Saludos y gracias ^^ Link to comment Share on other sites More sharing options...
_Romiii_ Posted March 26, 2013 Report Share Posted March 26, 2013 Chicos, perdonen por la tardanza de la respuesta, pero ¿cómo las expresiones regulares en Java me podrían ayudar en esta validación? Siendo que deseo obviamente validar un string de fechas haha.Y @AshWilliams, nosotros topábamos en que no podíamos echar a andar el código de la validación en nuestro JTextField para validar las fechas... Vamos a intentar con tu código y luego responderemos qué pasa ;) Saludos y gracias ^^ Las expresiones regulares son patrones, en este caso tu String debe ser DD/MM/YYYY y partir de eso, tu expresion debiese ser construida con ese patron, cosa que deba coincidir con tal, y luego aplicar el match para comparar el patron con tu string. Te dejo un ejemplo: import java.util.regex.Matcher; import java.util.regex.Pattern; public static void main(String[] args) throws Exception { System.out.print("Ingrese fecha => "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Obtengo la fecha ingresada. String fechaIngresada = br.readLine(); //Genero el patron/expresion regualr Pattern expresionRegular = Pattern.compile("(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d"); //comparo la expresion con la fecha Matcher m = expresionRegular.matcher(fechaIngresada); if ( m.find() ){ //si es true, pasó la validación. System.out.println("Fecha correcta ;)"); } else{ System.out.println("Fecha incorrecta :("); } } Suerte! PS: Esa expresión no valida la cantidad de dias de cada mes ni años bisiestos, si necesitas tbn validar eso, revisa el link que postie antes y ahi hay una mas completa ;) Link to comment Share on other sites More sharing options...
Harp Singer Posted March 31, 2013 Author Report Share Posted March 31, 2013 Muchas gracias chicos por sus respuestas, cierren no más el tema :) Link to comment Share on other sites More sharing options...
cañangasñangas Posted April 1, 2013 Report Share Posted April 1, 2013 Muchas gracias chicos por sus respuestas, cierren no más el tema :) Ok.cerrado Salute Link to comment Share on other sites More sharing options...
dierash Posted June 20, 2013 Report Share Posted June 20, 2013 gracias!!! Link to comment Share on other sites More sharing options...
Recommended Posts