Pregunta: | 34300 - VALIDACIÓN DE FECHAS EN JAVA |
Autor: | Pablo |
Estoy intentando validar fechas en un servlet java, el problema es que todo el codigo que tengo usa la clase Date que esta "deprecada" ¿Como se puede saber que unos valores recibidos de pantalla corresponden a una fecha correcta? |
Respuesta: | Mauricio Damián Araoz |
Hola amigo, la clase Date no esta en desuso, mas bien sus métodos están en desuso, pero sirve como puente para la clse Calendar, si tu código recibe un Date es fácil, creas un objeto Calendar del paquete java.util de la siguiente manera
// "date" será el objeto Date que recibes de tu clase Calendar calendar=Calendar.getInstance()// El constructor es protegido y hay que construirlo de esta forma calendar.setTime(date); y posteriormente al objeto calendar le pides todos los datos que quieras para hora ocupanos la constante HOUR_OF_DAY de la clase Calendar: calendar.get(Calendar.HOUR_OF_DAY);// y el método get devuelve un entero dependiendo del campo que se le haya pedido Si son las 20:14 hrs te devolvera 20 hay mas constantes como Calendar.MONTH, Calendar.DAY_OF_WEEK, Calendar.DAY_OF_YEAR,Calendar.MINUTE, Calendar.SECOND y así podrás ir pidiendo cada campo que necesites del Date que contiene la información. Además si quieres no ir pidiendo cada uno de los campos existen otras clases que te pueden ser útiles dentro del paquete java.text llamada DateFormat que con sus metodos estáticos getDateInstance, getDateTimeInstance y getTimeInstance podrás manipular el formato con que se muestran las fechas, de igual manera se le pasa un objeto Date al DateFormat por lo que te recuerdo que Date no esta en desuso. así mostrarías la fecha con formato DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.SHORT); String fecha=dateFormat.format(date) //el objeto Date que tengas System.out.println(fecha); el ejemplo anterior imprimirá 14 / 8 / 2009 además hay más constantes como DateFormat.MEDIUM, LONG y FULL que son para fechas, pero también puedes mostrar horas formateadas pidiendo un DateFormat.getTimeInstance() al que también puedes o bien no pasarle ningún parámetro o ponerle DateFormat.MEDIUM, LONG o FULL, para más información checa la api de java disponible en www.sun.com saludos |
Respuesta: | Willy´s Rguez B. Rguez B. |
Hola, mira yo utilizo el siguiente codigo para validar fechas, pero valido en javascript, debido a que tengo tres combos para el dia, mes y año, si de algo te sirve , pues aqui lo tienes, bye, saludos....
function valida(){ var mes=document.forms[0].Mmes_Bitaco var valormes=mes.options[mes.selectedIndex].text var dia=document.forms[0].Mdia_Bitaco var valordia=parseInt(dia.options[dia.selectedIndex].text) var an=document.forms[0].Man_Bitaco var valoran=parseInt(an.options[an.selectedIndex].text) var mes2=document.forms[0].Mmes2_Bitaco var valormes2=mes2.options[mes2.selectedIndex].text var dia2=document.forms[0].Mdia2_Bitaco var valordia2=parseInt(dia2.options[dia2.selectedIndex].text) var an2=document.forms[0].Man2_Bitaco var valoran2=parseInt(an2.options[an2.selectedIndex].text) var valordiasis=7 var valormessis=8 var valoranosis=2002 // Asignacion de los meses a Numeros \\ if(valormes=="Enero"){ valormes=1;} if(valormes=="Febrero"){ valormes=2;} if(valormes=="Marzo"){ valormes=3;} if(valormes=="Abril"){ valormes=4;} if(valormes=="Mayo"){ valormes=5;} if(valormes=="Junio"){ valormes=6;} if(valormes=="Julio"){ valormes=7;} if(valormes=="Agosto"){ valormes=8;} if(valormes=="Septiembre"){ valormes=9;} if(valormes=="Octubre"){ valormes=10;} if(valormes=="Noviembre"){ valormes=11;} if(valormes=="Diciembre"){ valormes=12;} if(valormes2=="Enero"){ valormes2=1;} if(valormes2=="Febrero"){ valormes2=2;} if(valormes2=="Marzo"){ valormes2=3;} if(valormes2=="Abril"){ valormes2=4;} if(valormes2=="Mayo"){ valormes2=5;} if(valormes2=="Junio"){ valormes2=6;} if(valormes2=="Julio"){ valormes2=7;} if(valormes2=="Agosto"){ valormes2=8;} if(valormes2=="Septiembre"){ valormes2=9;} if(valormes2=="Octubre"){ valormes2=10;} if(valormes2=="Noviembre"){ valormes2=11;} if(valormes2=="Diciembre"){ valormes2=12;} //Fin de la Asignacion de los meses a Numeros\\ //Validacion de Fechas\\ if(valoran2 == valoranosis && valormes2 == valormessis && valordia2 > valordiasis){ alert ("La Fecha Final es Mayor a la Fecha del Sistema" );} else { if(valoran2 == valoranosis && valormes2 > valormessis){ alert ("La Fecha Final es Mayor a la Fecha del Sistema" );} else { if(valoran2 > valoranosis){ alert ("La Fecha Final es Mayor a la Fecha del Sistema" );} else { if(valoran == valoran2 && valormes == valormes2 && valordia > valordia2){ alert ("La Fecha inicial es Mayor a la Final" );} else { if(valoran == valoran2 && valormes > valormes2){ alert ("La Fecha inicial es Mayor a la Final");} else { if(valoran > valoran2){ alert ("La Fecha inicial es Mayor a la Final");} else { if(valormes==2&&valordia>28 || valormes==4&&valordia>30 || valormes==6&&valordia>30 || valormes==9&&valordia>30 || valormes==11&&valordia>30 ){ alert ("El Día de la fecha de Inicio No es Valido"); } else { if(valormes2==2&&valordia2>28 || valormes2==4&&valordia2>30 || valormes2==6&&valordia2>30 || valormes2==9&&valordia2>30 || valormes2==11&&valordia2>30 ){ alert ("El Día de la fecha Final No es Valido"); } else { document.forms[0].submit(); } } } } } } } } //Fin de Validacion de Fechas\\ } |