2009-09-13 15 views
9

Tengo un programa que tiene que empezar en 1/1/09 y cuando comienzo a un nuevo día, mi programa mostrará el día siguiente. Esto es lo que tengo hasta ahora:añadiendo días a una fecha

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. 
} 

estoy consiguiendo el error resulta nula, pero se espera int, en 'newDay = startDate.add (5, 1);' ¿Qué debo hacer?

+3

Tres preguntas en un par de horas sobre las fechas. Tal vez es hora de mirar primero la API. – camickr

Respuesta

18

El objeto Calendar tiene un método add 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 El campo" de la clase Calendar.

Solo para referencia futura, The Java API Specification contiene mucha información útil acerca de cómo usar las clases que son parte de la API de Java.


Actualización:

estoy consiguiendo el error encontró vacío, sino int era de esperar, en 'newDay = startDate.add (5, 1);' ¿Qué debería hacer ?

El método add no devuelve nada, por lo tanto, intentar asignar el resultado de llamar Calendar.add no es válido.

El error del compilador indica que se está intentando asignar un void a una variable con el tipo de int. Esto no es válida, ya que no se puede asignar "nada" a una variable int.

Sólo una conjetura, pero tal vez esto puede ser lo que está tratando de 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 en realidad es Calendar.

Un Calendar no es una representación de una fecha. Es una representación de un calendario, y hacia donde apunta actualmente. Con el fin de obtener una representación de donde el calendario está apuntando a por el momento, se debe obtener una Date del Calendar utilizando el método getTime.

+0

¡Estaba a punto de escribir el enlace a la API! – vpram86

1

Si puede cambiarlo de requisitos, mueva todas sus necesidades de fecha/hora a JODA, que es una biblioteca mucho mejor, con la ventaja añadida de que casi todo es inmutable, lo que significa que el multihilo entra gratis.

Cuestiones relacionadas