lunes, 29 de agosto de 2011

Restar días (ó 1 año) a una fecha en Java

Uno de los problemas más comunes al tratar con fechas en Java, es el de calcular cierta fecha que nos interesa a partir del día actual.

En este ejemplo se muestra como obtener la fecha actual y restarle 1 año (teniendo en cuenta si el año actual es bisiesto):
	// Obtenemos el año actual como java.util.GregorianCalendar
	GregorianCalendar c = new GregorianCalendar();
	System.out.println("Dia actual:" + c.get(Calendar.DAY_OF_MONTH) + "/" + (c.get(Calendar.MONTH)+1) + "/" + c.get(Calendar.YEAR));
	// Obtenemos el año actual
	int currentYear = c.get(Calendar.YEAR);
	int daysToSubstract = -365;
	// Si este año es bisiesto y ya superamos el 29 de febrero, tenemos que restar 366
	// Si el año pasado fue bisiesto y en el año actual aún estamos en enero o febrero, tenemos que restar 366
	if ((c.isLeapYear(currentYear) && c.get(Calendar.MONTH)>1) ||  (c.isLeapYear(currentYear-1) && c.get(Calendar.MONTH)<2)){
		daysToSubstract = -366;
	}
	// Restamos (Sumamos el número negativo de días)
	c.add(GregorianCalendar.DAY_OF_YEAR, daysToSubstract);
	System.out.println("Dia hace un año:" + c.get(Calendar.DAY_OF_MONTH) + "/" + (c.get(Calendar.MONTH)+1) + "/" + c.get(Calendar.YEAR));

No hay comentarios:

Publicar un comentario en la entrada