En el programa desarrollado y mostrado en esta oportunidad, se han usado tres clases de la biblioteca de Java: la clase java.util.Date que sirve para crear una fecha actual del sistema, la clase java.text.DateFormat que sirve para dar formato a la fecha, y principalmente la clase java.util.GregorianCalendar que sirve para manipular fechas.
A continuación, se muestra la clase Calendario que usa la clase java.util.GregorianCalendar y permite manipular fechas creando una fecha actual del sistema o una fecha determinada. Además sirve para modificar la fecha, obtener formatos de impresión, saber si un año es bisiesto, y realizar cálculos sobre fechas. Esta clase se puede reutilizar fácilmente desde cualquier otra clase que necesite manipular fechas.
A continuación, se muestra la clase Calendario que usa la clase java.util.GregorianCalendar y permite manipular fechas creando una fecha actual del sistema o una fecha determinada. Además sirve para modificar la fecha, obtener formatos de impresión, saber si un año es bisiesto, y realizar cálculos sobre fechas. Esta clase se puede reutilizar fácilmente desde cualquier otra clase que necesite manipular fechas.
package com.sistemajava; import java.text.DateFormat; import java.util.GregorianCalendar; import java.util.Date; public class Calendario { private GregorianCalendar calendario; public Calendario() { calendario = new GregorianCalendar(); calendario.setTime(new Date()); } public Calendario(Date fecha) { calendario = new GregorianCalendar(); calendario.setTime(fecha); } public Calendario(int dia, int mes, int anno) { calendario = new GregorianCalendar(); calendario.set(GregorianCalendar.DAY_OF_MONTH, dia); calendario.set(GregorianCalendar.MONTH, --mes); calendario.set(GregorianCalendar.YEAR, anno); } public GregorianCalendar getCalendario() { return calendario; } public void modificarFecha(Date fecha) { calendario.setTime(fecha); } public void modificarDia(int dia) { calendario.set(GregorianCalendar.DAY_OF_MONTH, dia); } public void modificarMes(int mes) { calendario.set(GregorianCalendar.MONTH, --mes); } public void modificarAnyo(int anyo) { calendario.set(GregorianCalendar.YEAR, anyo); } public void modificarTiempo(int hora, int minutos, int segundos) { calendario.set(GregorianCalendar.HOUR, hora); calendario.set(GregorianCalendar.MINUTE, minutos); calendario.set(GregorianCalendar.SECOND, segundos); } public Date obtenerFecha() { return calendario.getTime(); } public String obtenerFormatoAAAA_MM_DD() { String dia, mes, anno; dia = "" + calendario.get(GregorianCalendar.DAY_OF_MONTH); mes = "" + (calendario.get(GregorianCalendar.MONTH)+1); anno = "" + calendario.get(GregorianCalendar.YEAR); if(dia.length() == 1) dia = "0" + dia; if(mes.length() == 1) mes = "0" + mes; return anno + "-" + mes + "-" + dia; } public String obtenerFormatoRegular() { DateFormat formatoFecha = DateFormat.getDateInstance(); return formatoFecha.format(calendario.getTime()); } public int obtenerAnyo() { return calendario.get(GregorianCalendar.YEAR); } public void adicionarMinutos(int minutos) { calendario.add(GregorianCalendar.MINUTE, minutos); } public void adicionarHoras(int horas) { calendario.add(GregorianCalendar.HOUR_OF_DAY, horas); } public void adicionarDias(int dias) { calendario.add(GregorianCalendar.DAY_OF_MONTH, dias); } public void adicionarMeses(int meses) { calendario.add(GregorianCalendar.MONTH, meses); } public void adicionarAnyos(int anyos) { calendario.add(GregorianCalendar.YEAR, anyos); } public boolean esFechaIgual(Calendario nuevoCalendario) { return obtenerFormatoRegular().equals(nuevoCalendario.obtenerFormatoRegular()); } public boolean esFechaHoraMenor(Calendario nuevoCalendario) { return calendario.before(nuevoCalendario.getCalendario()); } public boolean esFechaHoraMayor(Calendario nuevoCalendario) { return calendario.after(nuevoCalendario.getCalendario()); } public boolean esFechaHoraIgual(Calendario nuevoCalendario) { return calendario.equals(nuevoCalendario.getCalendario()); } public long diferenciaEnMilisegundos(Calendario calendarioAnterior){ return calendario.getTimeInMillis() - calendarioAnterior.getCalendario().getTimeInMillis(); } public double diferenciaEnSegundos(Calendario calendarioAnterior){ return diferenciaEnMilisegundos(calendarioAnterior) / 1000; } public double diferenciaEnMinutos(Calendario calendarioAnterior){ return diferenciaEnSegundos(calendarioAnterior) / 60; } public double diferenciaEnHoras(Calendario calendarioAnterior){ return diferenciaEnMinutos(calendarioAnterior) / 60; } public double diferenciaEnDias(Calendario calendarioAnterior){ return diferenciaEnHoras(calendarioAnterior) / 24; } public double diferenciaEnAnyos(Calendario calendarioAnterior){ return diferenciaEnDias(calendarioAnterior) / 365; } public int rangoEnAnyos(Calendario calendarioAnterior){ int anyoActual, anyoAnterior; anyoActual = calendario.get(GregorianCalendar.YEAR); anyoAnterior = calendarioAnterior.getCalendario().get(GregorianCalendar.YEAR); return anyoActual - anyoAnterior; } public boolean esAnyoBisiesto() { return calendario.isLeapYear(obtenerAnyo()); } }
También se ha desarrollado la clase ReportarCalendario que permite crear objetos del tipo Calendario, imprimir fechas en diferentes formatos, comparar fechas, e imprimir cálculos entre fechas.
package com.sistemajava; public class ReportarCalendario { public static void main(String[] args) { System.out.println("REPORTE DE CALENDARIO"); Calendario calendario = new Calendario(); System.out.println("Fecha actual en formato aaaa-mm-dd: " + calendario.obtenerFormatoAAAA_MM_DD()); calendario.modificarMes(3); System.out.println("Fecha modificada en formato regular: " + calendario.obtenerFormatoRegular()); calendario.adicionarDias(15); System.out.println("Fecha modificada mas 15 días: " + calendario.obtenerFormatoRegular()); calendario.adicionarDias(-2); System.out.println("Fecha modificada menos 2 días: " + calendario.obtenerFormatoRegular()); calendario.adicionarMeses(3); System.out.println("Fecha modificada mas 3 meses: " + calendario.obtenerFormatoRegular()); calendario.adicionarAnyos(4); System.out.println("Fecha modificada mas 4 años: " + calendario.obtenerFormatoRegular()); Calendario calendarioAnterior = new Calendario(20,9,2010); System.out.println("Fecha anterior: " + calendarioAnterior.obtenerFormatoRegular()); if(calendario.esFechaHoraMayor(calendarioAnterior)) System.out.println("La fecha modificada es mayor a la fecha anterior considerando la hora"); if(calendario.esFechaHoraMenor(calendarioAnterior)) System.out.println("La fecha modificada es menor a la fecha anterior considerando la hora"); if(calendario.esFechaIgual(calendarioAnterior)) System.out.println("La fecha modificada es igual a la fecha anterior sin considerar la hora"); System.out.println("Diefrencia de tiempos entre la fecha modificada y la fecha anterior"); System.out.println("Diferencia en milisegundos: " + calendario.diferenciaEnMilisegundos(calendarioAnterior)); System.out.println("Diferencia en segundos: " + calendario.diferenciaEnSegundos(calendarioAnterior)); System.out.println("Diferencia en minutos: " + calendario.diferenciaEnMinutos(calendarioAnterior)); System.out.println("Diferencia en horas: " + calendario.diferenciaEnHoras(calendarioAnterior)); System.out.println("Diferencia en días: " + calendario.diferenciaEnDias(calendarioAnterior)); System.out.println("Diferencia en años: " + calendario.diferenciaEnAnyos(calendarioAnterior)); System.out.println("Rango de años: " + calendario.rangoEnAnyos(calendarioAnterior)); if(calendario.esAnyoBisiesto()) System.out.println("El año " + calendario.obtenerAnyo() + " es bisiesto"); else System.out.println("El año " + calendario.obtenerAnyo() + " no es bisiesto"); } }
El resultado de ejecutar el programa se muestra en la siguiente figura:
Comentarios
Publicar un comentario
Gracias por tus comentarios