You are on page 1of 3

Ejercicio resuelto: leer, validar y contar dias con clase fecha en java

JAN29 Post Info


Mouse en 18:31 1 comentarios Permalink

Implemantar una clase para que lea una fecha con el formato "dd/MM/yyyy" y valide que sea una fecha correcta, tambien la fecha debe ser mayor al 01/01/1900, la clase debe devolver el numero de dias transcurridos desde el primer Grito Libertario de America. Respuesta: Diseamos nuestra clase que llamamos cfecha.java, para realizar operaciones con fechas en java se hara uso de las librerias java.text.SimpleDateFormat y java.util, ademas para controlar las excepciones que puedan ocurrir se hace uso de java.text.ParseException. El constructor de la clase cfecha, se inicializa con la fecha actual del sistema con su respectivo formato, ademas la clase cuenta con los metodos getFecha() y setFecha(d,m,y), un metodo privado para validar la fecha introducida y otro metodo para contar ls dias, cuando se introduce una fecha, se devuelve un valor booleano TRUE si la fecha es valida y False si la fecha no lo es.
package fecha; import import import import java.text.ParseException; java.text.SimpleDateFormat; java.util.Date; java.util.Locale;

/** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class cfecha { private String mifecha; private String fechaini = "25/05/1809"; private int dia= 1; private int mes = 1; private int anio =1900; public cfecha(){ SimpleDateFormat formateador = new SimpleDateFormat( "dd/MM/yyyy", new Locale("es_ES")); Date fechaDate = new Date(); mifecha = formateador.format(fechaDate); } public String getFecha(){ return mifecha;

} public boolean setFecha(int d, int m, int y){ boolean esfecha =true; if (ValidaFecha(mifecha)){ if ((d >= dia)&& (m >= mes)&& (y >= anio)) { mifecha= d + "/" + m + "/" + y; esfecha=true; } else { esfecha=false; } } else { esfecha=false; } return esfecha; } /** Valida una fecha si el formato de entrada es igual a dia/mes/ao */ private boolean ValidaFecha(String f) { try { //ayuda a mostrar la fecha respecto a un formato dado //en este caso dia/mes/ao SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()); //desabilita el modo permisivo osea que si es introduce una fecha invalida la ignorara // y no la convertira a una fecha equivalente valida formatoFecha.setLenient(false); //Convierte la cadena introducida en una fecha formatoFecha.parse(f); } catch (ParseException e) { // si se produce un error en la conversion devuelve false= fecha no valida return false; } return true; } /* Devuelve el numero de dias transcurridos desde una fecha inicial dada como constante * si la fecha introducida es menor a esa fecha, devuelve cero */ public int DiasTranscurridos(){ try { SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()); Date f1 = formatoFecha.parse(fechaini); Date f2 = formatoFecha.parse(mifecha); if (f1.before(f2)) { long f3 = f1.getTime(); long f4 = f2.getTime(); long resta = f4-f3; double dias = Math.floor(resta/(1000 * 60 * 60 * 24)); return (int) dias;

} else { return 0; } } catch (ParseException ex) { return 0; } } }

Para implementar la clase cfecha.java .


package fecha; /** * @web http://jc-mouse.blogspot.com/ * @author mouse */ public class Main { public static void main(String[] args) { cfecha f = new cfecha(); if (f.setFecha(1, 14,1800)){ System.out.println("Fecha introducida: " + f.getFecha()); System.out.println(f.DiasTranscurridos() + " dias trasncurridos"); } else { System.out.println("No es un fecha valida"); } } }

http://jc-mouse.blogspot.com/2011/01/base-de-datos-accessjava-control-de.html

You might also like