¿Cómo puedo incrementar una fecha en un día en Java?
Estoy trabajando con una fecha en este formato: yyyy-mm-dd
.
¿Cómo puedo incrementar esta fecha en un día?
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
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);
java.tiempo
En Java 8 y posteriores, el paquete java.time hace que esto sea prácticamente automático. ( Tutorial )
Suponiendo String
entrada y salida:
import java.time.LocalDate;
public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
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.
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );