miércoles, 6 de marzo de 2013

Como restar o sumar N dias,meses y/o Años a una fecha con Calendar de Java.


Realizar operación con la Clase Calendar es fácil y rápido a comparación de la Clase Date en java

el siguiente codigo muestra como restar un día de la fecha actual p.e::
-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°
01/03/13 - (1 dia) = 28/02/13
-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°

        Calendar c1 = GregorianCalendar.getInstance();
        System.out.println("Fecha actual: " + c1.getTime().toLocaleString());


        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy");
        System.out.println("Fecha Formateada: " + sdf.format(c1.getTime()));


        c1.add(Calendar.DATE, -1);
        System.out.println("Fecha Formateada: " + sdf.format(c1.getTime()));

-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°
ejemplo 2 sumar un dia:
-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°

06/03/13 + (1 dia) = 07/03/13

        Calendar c1 = GregorianCalendar.getInstance();
        System.out.println("Fecha actual: " + c1.getTime().toLocaleString());
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MMMMM/yyyy hh:mm:ss");
        System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));
        sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
        System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));
        c1.add(Calendar.DATE, 1);
        System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));


-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°
ejemplo 3 mas un mes y mas un año
-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°-°

        c1.add(Calendar.MONTH, 1);
        System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));
        c1.add(Calendar.YEAR, 1);
        System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));

Saludos !!

11 comentarios:

  1. Y como seria si quisiesemos conseguirlo sin utilizar la clase gregorian calendar? Es decir, conseguir cuantos dias hay entre una fecha y otra sin usar ninguna libreria

    ResponderEliminar
  2. si quisiera mostrar el resultado en un jtextfield, disculpen estoy empesando en java y cuando trato de dar el System.print no me muestra nada en el field.

    ResponderEliminar
    Respuestas
    1. Seria de la siguiente forma:

      jtextfield.getText(sdf.format(c1.getTime()));

      Donde la palabra "jtextfield" es el nombre de tu variable jtextfield

      Eliminar
    2. quiero mostrar el resultado y le hice como mencionaste jtextfield.getText(sdf.format(c1.getTime()));
      pero me sale error, no suitanle method dound for getText(String)
      method JTextComponent.getText(int,int) is not applicable... soy novata en esto.

      Eliminar
  3. Hola, te comento lo que me pasa... mi idea es a la fecha actual (que es la que extraigo de la computadora) sumarle 7 dias y compararla con una fecha que tengo en un jtable con el formato: yyyy-MM-dd.
    estoy intentando de toda la forma y no me sale nada.. no sabes como puedo lograrlo?
    Saluods y muchas gracias.

    ResponderEliminar
  4. hola buenas tardes. tengo un dilema es que necesito sumarle un mes a mi fecha pero no la del sistema si no la de un jadatechoocer.

    ResponderEliminar