acrescentando dias para uma data
-
06-07-2019 - |
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?
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.