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