Cómo añadir o restar horas, minutos o segundos a una fecha en java con la clase Calendar

A veces es necesario, en nuestros programas java, incrementar o restar de una fecha en cierta cantidad de horas, minutos o segundos. Usando la clase Calendar de este lenguaje es muy sencillo hacer este tipo de operaciones con el tiempo.

Aquí les dejo el código auto-explicativo:

import java.util.Calendar;

/**
 *
 * @author scyasig
 */
public class OperacionesCalendar {
    
  public static void main(String[] args) {
        
    // Obtiene fecha y hora actuales
    Calendar fecha = Calendar.getInstance();
    System.out.println("La fecha actual es: " + 
      String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", fecha));
        
    // Incrementa 30 segundos la fecha 
    fecha.add(Calendar.SECOND, 30);
    System.out.println("La fecha actual es: " + 
      String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", fecha));

    // Incrementa 30 minutos la fecha
    fecha.add(Calendar.MINUTE, 30);
    System.out.println("La fecha actual es: " + 
      String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", fecha));
        
    // Restar 30 horas la fecha
    fecha.add(Calendar.HOUR, -30);
    System.out.println("La fecha actual es: " + 
      String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", fecha));
        
  }
  
}

Al ejecutar el código anterior dará la siguiente salida (dependiendo de la hora en que sea ejecutado):

La fecha actual es: 2017-01-23 21:18:23
La fecha actual es: 2017-01-23 21:18:53
La fecha actual es: 2017-01-23 21:48:53
La fecha actual es: 2017-01-22 15:48:53

Espero y les sea útil.

¡Hasta la próxima!

 

Dar formato a una fecha con String.format() de java usando un Calendar.

El siguiente código usa la clase Calendar para almacenar la fecha y hora actual y dar formato a dicha fecha usando el método format() de la clase String:

public class StringFormat {
  public static void main(String[] args) {
    Calendar fecha = Calendar.getInstance();
    System.out.println("La fecha actual es: " + 
      String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", fecha)); 
  }
}

Ejecutando el código anterior mostrará como resultado la fecha con el siguiente formato:

La fecha actual es: 2017-01-23 20:33:30

¡Espero les sea útil! ¡Saludos!

Obtener la fecha actual en java con la clase Calendar.

A partir de java 7 los métodos para obtener el día, mes y año de una fecha han quedado obsoletos o en desuso y podrán desaparecer en futuras versiones.

Lo que recomiendan es el uso de la clase Calendar para obtener estos datos. Enseguida un pequeño ejemplo de cómo obtener la fecha (“AAAA-MM-DD”) con la clase Calendar de java:

...
Calendar fechaActual = Calendar.getInstance();
String cadenaFecha = String.format("%04d-%02d-%02d-%02d",
  fechaActual.get(Calendar.YEAR),
  fechaActual.get(Calendar.MONTH)+1,
  fechaActual.get(Calendar.DAY_OF_MONTH));
System.out.println(cadenaFecha);
....

Observe el +1 al obtener el mes. Calendar.MONTH regresa el número de mes pero a partir de 0, por eso la necesidad de aumentar en uno para obtener el mes correctamente.

Espero y les sea útil. ¡Saludos!