some image

Codes and Tags

Operaciones de fechas con Calendar (java)

Etiquetas: Blog, Programación 5 comments

Consideraciones a tener en cuenta para realizar operaciones con la clase Calendar

1) Para definir una fecha se utiliza el método set(), cuyo constructor viene sobrecargado con diferentes parámetros.

Ejemplo :

/**
 * Definiendo fechas
 */
System.out.println("[ Definiendo Fechas ]\n");
//Instancia a calendar
Calendar fecha = Calendar.getInstance();

//Imprimiendo fecha actual
System.out.println(String.format("Fecha actual: %1$tY-%1$tm-%1$td",	fecha.getTime()));

//Cambiando de fecha
fecha.set(2011, 8, 28);
System.out.println(String.format("He cambiado la fecha a : %1$tY-%1$tm-%1$td",	fecha.getTime()));

//Modificando el mes
fecha.set(Calendar.MONTH, 9);
System.out.println(String.format("He cambiado el mes  : %1$tY-%1$tm-%1$td", fecha.getTime()));

//Modificando el anio
fecha.set(Calendar.YEAR, 2010);
System.out.println(String.format("He cambiado el anio a : %1$tY-%1$tm-%1$td",	fecha.getTime()));

Salida

[ Definiendo Fechas ]

Fecha actual: 2011-10-16
He cambiado la fecha a : 2011-09-28
He cambiado el mes  : 2011-10-28
He cambiado el anio a : 2010-10-28

2) Para sumar o restar Años, Meses, Semanas, Dias, Horas, Minutos, Segundos o Milisegundos se utiliza el metodo add().
3) Para sumar se debe utilizar el formato add(Campo, Valor), para restar el valor se coloca negativo add(Campo, -Valor).

Ejemplo :

/**
 * Realizando Operaciones
 */

System.out.println("\n[ Operando con Fechas ]\n");

//Instancia a calendar
Calendar fecha = Calendar.getInstance();

//Sumando dias
System.out.println(String.format("Fecha antes de la suma de dias : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.DATE, 35);
System.out.println(String.format("He sumado 35 dias y ahora tengo : %1$tY-%1$tm-%1$td",
		fecha.getTime()));

//Restando meses
System.out.println(String.format("Fecha antes de la resta de anios : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.YEAR, -5);
System.out.println(String.format("He restado 5 anios y ahora tengo : %1$tY-%1$tm-%1$td",
		fecha.getTime()));

//Sumando horas
System.out.println(String.format("Fecha antes de la suuma de horas : %1$tY-%1$tm-%1$td",
		fecha.getTime()));
fecha.add(Calendar.HOUR, 1200);
System.out.println(String.format("He sumado 1200 horas y ahora tengo : %1$tY-%1$tm-%1$td",
		fecha.getTime()));

Salida

[ Operando con Fechas ]

Fecha antes de la suma de dias : 2010-10-28
He sumado 35 dias y ahora tengo : 2010-12-02
Fecha antes de la resta de anios : 2010-12-02
He restado 5 anios y ahora tengo : 2005-12-02
Fecha antes de la suuma de horas : 2005-12-02
He sumado 1200 horas y ahora tengo : 2006-01-21

4) Para comparar fechas se utiliza el método compareTo().  Esta comparacion se realiza de una fecha en relacion con otra fecha. El resultado que arroja el método compareTo es un entero que se interpreta de la siguiente forma :

-1 : La fecha 1 es menor a la fecha 2
0 : Las fechas son iguales
1 : La fecha 1 es mayor a la fecha 2

Ejemplo :

	public static void main(String[] args) {
		/**
		 * Comparando fechas
		 */

		System.out.println("\n[ Comparando 2 fechas ]\n");

		Calendar fecha1 = Calendar.getInstance();
		Calendar fecha2 = Calendar.getInstance();
		fecha2.set(2011,11, 31);
		Calendar fecha3 = Calendar.getInstance();
		fecha3.set(2005,3,15);

		//Imprimo la fecha 1
		System.out.println(String.format("Fecha 1 : %1$tY-%1$tm-%1$td",
				fecha1.getTime()));
		//Imprimo la fecha 2
		System.out.println(String.format("Fecha 2 : %1$tY-%1$tm-%1$td",
				fecha2.getTime()));
		//Imprimo la fecha 3
		System.out.println(String.format("Fecha 3 : %1$tY-%1$tm-%1$td",
				fecha3.getTime()));

		System.out.println("\nComparando las fechas \n");
		System.out.println(compararFechas(fecha1, fecha2));
		System.out.println(compararFechas(fecha2, fecha1));
		System.out.println(compararFechas(fecha1, fecha3));
		System.out.println(compararFechas(fecha2, fecha3));
		System.out.println(compararFechas(fecha1, fecha1));

	}

	/**
	 * Metodo que compara 2 fechas y muestra el resultado
	 * @param fecha1
	 * @param fecha2
	 * @return
	 */
	public static String compararFechas(Calendar fecha1, Calendar fecha2){
		if(fecha1.compareTo(fecha2) < 0){ 			return "Comparacion : " + (String.format("%1$tY-%1$tm-%1$td", fecha1)) +  					" es menor a " + (String.format("%1$tY-%1$tm-%1$td", fecha2)); 		}else if(fecha1.compareTo(fecha2) > 0){
			return "Comparacion : " + (String.format("%1$tY-%1$tm-%1$td", fecha1)) + 
					" es mayor a " + (String.format("%1$tY-%1$tm-%1$td", fecha2));
		}else{
			return "Comparacion : Las fechas son iguales " 
					+ (String.format("%1$tY-%1$tm-%1$td", fecha2));
		}
	}

Salida

[ Comparando varias fechas ]

Fecha 1 : 2011-10-16
Fecha 2 : 2011-12-31
Fecha 3 : 2005-04-15

[ Resultados de la comparacion ]

Comparacion : 2011-10-16 es menor a 2011-12-31
Comparacion : 2011-12-31 es mayor a 2011-10-16
Comparacion : 2011-10-16 es mayor a 2005-04-15
Comparacion : 2011-12-31 es mayor a 2005-04-15
Comparacion : Las fechas son iguales 2011-10-16

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment