Cómo añadir un día a una Date en Java

Asad Riaz 30 enero 2023 2 mayo 2020
  1. El método plusDays() para añadir un día a una Date en Java
  2. Método Calendar para añadir un día a una fecha en Java
  3. Agregar Milliseconds para agregar un día a una fecha en Java
  4. La clase Instant para añadir un día a una fecha en Java
Cómo añadir un día a una Date en Java

En este tutorial, aprenderemos cómo añadir días a una Date en Java. Esto se puede hacer usando varios enfoques como el método plusDays, el método de la clase Calendar, añadiendo milisegundos a un objeto Date, y el método de la clase instantánea. Si estás usando Java 1.8 o mayor, entonces se recomienda el método plusDays.

El método plusDays() para añadir un día a una Date en Java

En Java 1.8 en adelante, las nuevas clases de java.time, es decir, LocalDate, LocalDateTime tienen métodos de plusDays y minusDays para sumar y restar la unidad de tiempo de cualquier instancia de tiempo.

Considera el siguiente código:

// java 1.8
package simpletesting;
import java.time.LocalDateTime;

public class SimpleTesting {
    public static void main(String[] args) {
        LocalDateTime today = LocalDateTime.now();     //Today
        LocalDateTime tomorrow = today.plusDays(1);     //Plus 1 day
        LocalDateTime yesterday = today.minusDays(1);   //Minus 1 day
        System.out.println("Today:     "+today);          
        System.out.println("Tomorrow:  "+tomorrow);      
        System.out.println("Yesterday: "+yesterday);          
    }
}    

Producción:

Today:     2020-03-22T19:01:00.728
Tomorrow:  2020-03-23T19:01:00.728
Yesterday: 2020-03-21T19:01:00.728

Método Calendar para añadir un día a una fecha en Java

Podemos usar la clase de Calendar para añadir un día a una Date en Java. Se puede hacer simplemente añadiendo un día a la clase del Calendar:

// java 1.8
package simpletesting;
import java.util.Calendar;
import java.util.Date;

public class SimpleTesting {
    public static void main(String[] args) {
        Date dt = new Date();
        System.out.println("Today:    "+dt);
        Calendar c = Calendar.getInstance();
        c.setTime(dt);
        c.add(Calendar.DATE, 1);
        dt = c.getTime();
        System.out.println("Tomorrow: "+dt);
    }
}    

Producción:

Today:    Sun Mar 22 19:07:48 PKT 2020
Tomorrow: Mon Mar 23 19:07:48 PKT 2020

Agregar Milliseconds para agregar un día a una fecha en Java

Date tiene un constructor que usa milisegundos. El método getTime() nos da ese valor. Así que sumando los milisegundos de un día, se sumará un día a Date.

Código:

// java 1.8
package simpletesting;
import java.util.Date;

public class SimpleTesting {

    public static void main(String[] args) {
        Date dt = new Date();
        System.out.println("Today:    " + dt);
        Date tomorrow = new Date(dt.getTime() + (1000 * 60 * 60 * 24));
        System.out.println("Tomorrow: " + tomorrow);
    }
}

Producción:

Today:    Sun Mar 22 19:15:27 PKT 2020
Tomorrow: Mon Mar 23 19:15:27 PKT 2020

Ten cuidado, si usamos una Zona Horaria del Calendario con ahorro de luz, puede que no salte al día siguiente.

La clase Instant para añadir un día a una fecha en Java

La clase Instant está cerca de ser equivalente a la Date. Instant se resuelve en nanosegundos. El método instant.plus suma los días dados a la Date.

Código:

// java 1.8
package simpletesting;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Date;

public class SimpleTesting {
    public static void main(String[] args) {
        Date dt = new Date();
        System.out.println("Today:    " + dt);
        Instant instant = dt.toInstant();
        Instant nextDay = instant.plus(1, ChronoUnit.DAYS);
        System.out.println("Tomorrow: " + nextDay);
    }
}

Producción:

Today:    Sun Mar 22 19:19:58 PKT 2020
Tomorrow: 2020-03-23T14:19:58.072Z

Artículo relacionado - Java DateTime