Problemas com Operações com Datas , Classe Calendar

5 respostas
M

Ola pessoal boa noite sou novo aqui no fórum e também em java, tenho um problema, preciso comparar a diferença entre duas datas, data final e data inicial basicamente preciso saber o tempo de execução de uma tarefa que se incia em data inicial e termina em data final, pois bem ai é que está o problema teoricamente é só subtrair mas não consigo

Coloquei o um pedaço código abaixo, o que fiz foi criar uma variável que recebe a subtração de dataInicial e dataFinal mas sempre me retorno o seguinte erro[color=blue] the operator - is undefined for the argument types ) java.util.Calendar[/color]

[b]public class Tarefas {

@Temporal(TemporalType.TIMESTAMP)
private Calendar dataInicial;

@Temporal(TemporalType.TIMESTAMP)
private Calendar dataFinal;
public void setFinished() {

this.status = TaarefaStatus.STARTED;

this.dataInicial = new GregorianCalendar();

}

public void setFinished() {

this.status = TaskStatus.FINISHED;

this.dataFinal= new GregorianCalendar();

}

public Calendar getDataInicial() {

return endDate;

}
public Calendar getDataFinal() {
    return startDate;
}[/b]

5 Respostas

Paulo_Dias

Bom dia,

verificando o seu codigo notei que os metodos gets parecem trocados

exemplo:

public Calendar getDataInicial() { 
      return endDate; 
}

outra coisa, você não pode subtrair Calendar com o operador -

uma ideia é pegar os milisegundos

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html

M

Bom dia Paulo,

realmente os métodos estão trocados ali os returns serião

return dataInicial e return dataFinal respectivamente, ja tentei usar milisegundos mas não devo estar sabendo aplicar direito pois não está dando certo, vou tentar novamente

brigado pela resposta.

M

Tentei fazer isso mas logo pede para mudar para long.

[b]public class Tarefas {

@Temporal(TemporalType.TIMESTAMP)
private Calendar dataInicial;

@Temporal(TemporalType.TIMESTAMP)
private Calendar dataFinal;

[color=red]@Temporal(TemporalType.TIMESTAMP)

private Calendar dataTime = dataInicial.getTimeInMillis() - dataFinal.getTimeInMillis() ;

[/color]
public void setFinished() {

this.status = TaarefaStatus.STARTED;

this.dataInicial = new GregorianCalendar();

}

public void setFinished() {

this.status = TaskStatus.FINISHED;

this.dataFinal= new GregorianCalendar();

}
public Calendar getDataInicial() {

return dataInicial;

}
public Calendar getDataFinal() {

return dataFinal;

}[/b]
Paulo_Dias

você queria a diferença entre duas datas, né?

você tem essa diferença em milisegundos, você quer essa diferença em horas, minutos, segundos? converta o valor.

veja esse topico

M

Valeu Paulo! resolvido.

Criado 18 de novembro de 2012
Ultima resposta 19 de nov. de 2012
Respostas 5
Participantes 2