Pergunta

Eu tenho um programa que precisa para começar em 1/1/09 e quando eu começar um novo dia, o meu programa mostrará o dia seguinte. Isto é o que eu tenho até agora:

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

Estou recebendo o erro encontrado vazio, mas espera int, em 'NewDay = startDate.add (5, 1);' O que devo fazer?

Foi útil?

Solução

O href="http://java.sun.com/javase/6/docs/api/java/util/Calendar.html" rel="noreferrer"> Calendar objeto add método "noreferrer" que permite adicionar ou subtrair valores de um campo especificado.

Por exemplo,

Calendar c = new GregorianCalendar(2009, Calendar.JANUARY, 1);
c.add(Calendar.DAY_OF_MONTH, 1);

As constantes para indicar o domínio podem ser encontrados no "Resumo do campo" do Calendar classe.

Apenas para referência futura, O Java Specification API contém uma grande quantidade de informações úteis sobre como usar as classes que são parte da API do Java.


Update:

Estou recebendo o erro encontrado vazio, mas int esperado, em 'NewDay = startDate.add (5, 1);' O que eu deveria fazer?

O método add não retorna nada, portanto, tentando atribuir o resultado da chamada Calendar.add não é válido.

O erro do compilador indica que se está tentando atribuir um void a uma variável com o tipo de int. Esta não é válido, pois não se pode atribuir "nada" a uma variável int.

Apenas um palpite, mas talvez isso pode ser o que está a tentar ser alcançado:

// 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);

Output:

Thu Jan 01 00:00:00 PST 2009
Fri Jan 02 00:00:00 PST 2009

O que precisa ser considerado é o que Calendar realmente é.

A Calendar não é uma representação de uma data. É uma representação de um calendário, e onde ele está apontando. A fim de obter uma representação de onde o calendário está apontando no momento, deve-se obter um Date do Calendar usando o getTime método.

Outras dicas

Se você pode swing exigência sábio, mover todas as suas necessidades de data / hora para JODA, que é uma biblioteca muito melhor, com a vantagem adicional de que quase tudo é imutável, ou seja, multithreading vem em gratuitamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top