En este post voy a explicar cómo operar con fechas usando un objeto de tipo Calendar en Java. Vamos a añadir y a substraer meses, años o días de la fecha, para saber la fecha pasada, futura, etcétera.
Para obtener la fecha actual de un objeto Calendar llamamos a Calendar.getInstance
. Así:
Calendar c = Calendar.getInstance();
Cuando tenemos a este objeto podemos agregarle y restarle días, meses, horas, etcétera.
La ventaja al usar los métodos que explico aquí es que no importa la fecha, siempre dará resultados correctos.
Por ejemplo, al restar un mes del 15 de enero del 2019 se convierte en 15 de diciembre del 2018 (o algo así, pero quiero que se note que se regresó un año atrás como debería hacerlo)
Con un algoritmo escrito por nosotros simplemente trataríamos de restar el mes, sin importar si fuera enero; provocando muchos errores.
Para sumar y restar, en ambos casos llamamos al método add
de un Calendar. Este método recibe dos argumentos:
Este método modifica directamente al objeto; no devuelve uno nuevo.
Los campos más comunes son:
También existen otros campos pero estos son los más comunes.
Ya lo dije y lo digo de nuevo: si se quiere restar se llama igualmente al método add
pero pasándole un valor negativo.
Veamos el siguiente código que hace múltiples operaciones con un objeto de tipo Calendar. Como dije, esto modifica directamente al objeto.
/*
Sumar y restar fechas con Java y Calendar
@author parzibyte
*/
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Locale;
class Main {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println("Fecha original: " + formatearCalendar(c));
// Restar cinco meses
c.add(Calendar.MONTH, -5);
System.out.println("-5 meses: " + formatearCalendar(c));
// Sumar 2 años
c.add(Calendar.YEAR, 2);
System.out.println("+2 años: " + formatearCalendar(c));
// Restar 2 días
c.add(Calendar.DAY_OF_YEAR, -2);
System.out.println("-2 días: " + formatearCalendar(c));
// Sumar 52 días
c.add(Calendar.DAY_OF_YEAR, 52);
System.out.println("+52 días: " + formatearCalendar(c));
// Sumar 24 horas
c.add(Calendar.HOUR_OF_DAY, 24);
System.out.println("+24 horas: " + formatearCalendar(c));
// Sumar 1500 minutos (25 horas)
c.add(Calendar.MINUTE, 1500);
System.out.println("+1500 minutos: " + formatearCalendar(c));
// Restar 90000 segundos (25 horas, 25 * 60 * 60)
c.add(Calendar.SECOND, -90000);
System.out.println("-90000 segundos: " + formatearCalendar(c));
}
// Este es un método para formatear e imprimir la fecha, pero no tiene nada
// que ver con sumar o restar
public static String formatearCalendar(Calendar c) {
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault());
return df.format(c.getTime());
}
}
En el ejemplo se muestra cómo restar y sumar períodos de tiempo.
También he puesto una función para formatear la fecha y demostrar los resultados, la cual no afecta a las operaciones que hacemos, simplemente muestra la fecha.
Puedes ver más sobre Java o Fechas en mi blog.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.