agregar días a una fecha
-
06-07-2019 - |
Pregunta
Tengo un programa que debe comenzar el 1/1/09 y cuando empiezo un nuevo día, mi programa se mostrará al día siguiente. Esto es lo que tengo hasta ahora:
GregorianCalendar startDate = new GregorianCalendar(2009, Calendar.JANUARY, 1);
SimpleDateFormat sdf = new SimpleDateFormat("d/M/yyyy");
public void setStart()
{
startDate.setLenient(false);
System.out.println(sdf.format(startDate.getTime()));
}
public void today()
{
newDay = startDate.add(5, 1);
System.out.println(newDay);
//I want to add a day to the start day and when I start another new day, I want to add another day to that.
}
Recibo el error nulo pero esperado int, en 'newDay = startDate.add (5, 1);' ¿Qué debo hacer?
Solución
El Calendario
el objeto tiene un add
método que permite agregar o restar valores de un campo específico.
Por ejemplo,
Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);
Las constantes para especificar el campo se pueden encontrar en el "Resumen de campo" del Calendar
clase.
Solo para referencia futura, La especificación API de Java contiene muchos información útil sobre cómo usar las clases que forman parte de la API de Java.
Update:
Recibo el error vacío pero int esperado, en 'newDay = startDate.add (5, 1); ' Que debería hacer?
El método add
no devuelve nada, por lo tanto, intentar asignar el resultado de llamar a Calendar.add
no es válido.
El error del compilador indica que uno está intentando asignar un vacío
a una variable con el tipo de int
. Esto no es válido, ya que no se puede asignar "nada". a una variable int
.
Solo una suposición, pero quizás esto sea lo que se intenta lograr:
// Get a calendar which is set to a specified date.
Calendar calendar = new GregorianCalendar(2009, Calendar.JANUARY, 1);
// Get the current date representation of the calendar.
Date startDate = calendar.getTime();
// Increment the calendar's date by 1 day.
calendar.add(Calendar.DAY_OF_MONTH, 1);
// Get the current date representation of the calendar.
Date endDate = calendar.getTime();
System.out.println(startDate);
System.out.println(endDate);
Salida:
Thu Jan 01 00:00:00 PST 2009
Fri Jan 02 00:00:00 PST 2009
Lo que debe tenerse en cuenta es lo que realmente es Calendar
.
Un Calendario
no es una representación de una fecha. Es una representación de un calendario y hacia dónde está apuntando actualmente. Para obtener una representación de hacia dónde apunta el calendario en este momento, se debe obtener un Fecha
del Calendario
utilizando el getTime
.
Otros consejos
Si puede cambiarlo según los requisitos, mueva todas sus necesidades de fecha / hora a JODA, que es una biblioteca mucho mejor, con la ventaja adicional de que casi todo es inmutable, lo que significa que el subprocesamiento múltiple es gratis.