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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top