¿Cómo puedo incrementar una fecha en un día en Java?

Resuelto user48094 asked hace 15 años • 0 respuestas

Estoy trabajando con una fecha en este formato: yyyy-mm-dd.

¿Cómo puedo incrementar esta fecha en un día?

user48094 avatar Jan 10 '09 00:01 user48094
Aceptado

Algo como esto debería funcionar:

String dt = "2008-01-01";  // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1);  // number of days to add
dt = sdf.format(c.getTime());  // dt is now the new date
Dave avatar Jan 09 '2009 17:01 Dave

ACTUALIZACIÓN (mayo de 2021): Esta es una respuesta realmente desactualizada para el antiguo Java. Para Java 8 y superior, consulte https://stackoverflow.com/a/20906602/314283

Java parece estar muy por detrás de la bola ocho en comparación con C#. Este método de utilidad muestra la forma de hacerlo en Java SE 6 utilizando el método Calendar.add (presumiblemente la única forma sencilla).

public class DateUtil
{
    public static Date addDays(Date date, int days)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, days); //minus number would decrement the days
        return cal.getTime();
    }
}

Para agregar un día, según la pregunta formulada, llámelo de la siguiente manera:

String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
Lisa avatar Mar 08 '2012 06:03 Lisa

java.tiempo

En Java 8 y posteriores, el paquete java.time hace que esto sea prácticamente automático. ( Tutorial )

Suponiendo Stringentrada y salida:

import java.time.LocalDate;

public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}
Daniel C. Sobral avatar Jan 03 '2014 15:01 Daniel C. Sobral

Prefiero usar DateUtils de Apache. Consulte esto http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html . Es útil especialmente cuando tiene que usarlo en varios lugares de su proyecto y no desea escribir un método único para esto.

La API dice:

addDays(Fecha fecha, cantidad int): agrega una cantidad de días a una fecha que devuelve un nuevo objeto.

Tenga en cuenta que devuelve un nuevo objeto Fecha y no realiza cambios en el anterior.

Risav Karna avatar Aug 13 '2012 12:08 Risav Karna
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
Alex B avatar Jan 09 '2009 17:01 Alex B