Social

sábado, 24 de enero de 2015

Java: Sumar y restar horas en un Date

Muchas veces es necesario realizar operaciones sobre una fecha. No solamente sumar o restar horas sino también minutos, segundos, semanas, años, meses, etc. Para tal tarea existe en Java la clase Calendar. Esta clase nos permite modificar una fecha (Date) base a nuestro gusto usando los métodos que tiene predefinidos.

En el siguiente código se puede observar los cambios en un objeto del tipo Date usando Calendar.


Al ejecutar el codigo se obtendra el siguiente resultado:

7 comentarios :

  1. Para tu ejemplo restaste 13 -5, pero ¿cómo resto un número mayor de minutos al minuendo? si quiero restar 14 minutos, calendar.minute queda con -1 y la hora no cambia.
    Gracias
    Saludos

    ResponderEliminar
    Respuestas
    1. Hola. Los metodos set de calendario solo aceptan valores validos del para cada tipo de elemento. Por ejemplo Minuto del 0 al 59, Horas del 0 al 23, etc. Si le pones un valor fuera de este rango no realiza el cambio como dices. Para el caso que dices deberías hacer la validación y cambiar la hora y minutos.

      Eliminar
  2. hola te consulto como puedo hacer para sumar 7 dias a la fecha, pero sin que aparezca la hora, minutos y segundos?
    es mas los dias que tengo que sumar es sobre un dato que traigo de mi base de datos. espero tu respuesta. saludos y gracias

    ResponderEliminar
    Respuestas
    1. Hola Cuba!

      De la misma forma que en los horas, minutos y meses puedes usar los metodos set y get solo que con DATE. De la siguiente forma:

      cal.set(Calendar.DATE, cal.get(Calendar.DATE)+7);

      Eliminar
  3. buenas tardes ayudeme con la siguiente informacion, como puedo restar el tiempo, es decir la diferencia de tiempo

    ResponderEliminar
  4. HOLA A TODOS. Nesecito sumar de igual forma, pero al ver que no hay forma... se me ocurre algo y espero ayudarlos (supongamos que la fecha es 25/10/2020 23:45).


    Calendar cal = Calendar.getInstance();

    int dia = cal.get(Calendar.DATE);
    int mes = cal.get(Calendar.MONTH);
    int hora = cal.get(Calendar.HOUR_OF_DAY);
    int minuto = cal.get(Calendar.MINUTE);

    int nuevoMin = min + 35;
    Int nuevaHora = hora + 12;
    Int nuevoDia = dia + 15;

    If(nuevoMin > 60){
    Int x = nuevoMin-60;
    }
    If(nuevaHora > 24){
    Int y= nuevaHora-24;
    }

    If(nuevoDia > 31){
    Int z= nuevoDia -31;
    }





    Y ya imprimirlo...tienes que ver si el es es de 31 o 30, o 28, y eso es mas facil

    ResponderEliminar
    Respuestas
    1. A salida seria

      09/10/2020. 11:20


      Ya com eso puedes crear un metodo...

      Por ejemplo en el caso de los meses

      If (nuevoMes > 12){
      nuevoMes = nuevoMes-12;
      anio+1;
      }



      Eliminar