Oi sou novo no java, se me ajudarem ficarei muito agradecido, tenho dois parametros do tipo data periodoInicial e periodoFinal, como faço para que periodoFinal-periodoInicial seja igual a um int?
obrigado
Data retornar int
9 Respostas
Quer que adivinhemos também o teu signo?
Camarada, precisamos que você nos diga como está implementando isto, senão, fica impossível.
vc quer a diferença em que unidade ??
dias, mês, ano, minutos, segundos, horas ??
Pra você calcular a diferença em dias faça assim:
public long diferencaEmDias(Date dataInicial, Date dataFinal) {
long dif = dataFinal.getTime() - dataInicial.getTime();
long difDias = (dif / 1000) / 60 / 60 / 24; //diferença entre as datas em dias
return difDias;
}
Ainda há como fazer com que as horas restantes sejam também calculadas na diferença, mas aí fica pra dever de casa!
Desculpe-me nao ter me expressado corretamente, minhas entradas são desta forma, o que preciso eh PeriodoFinal-PeriodoInicial e o resultado venha em dias, novamente me desculpem.
this.addParametro("PeriodoInicial", "Data Inicial", new EDBHoje(true));
this.addParametro("PeriodoFinal", "Data Final", new EDBHoje(true));
obrigado, eh exatamente o que preciso.
Tá aqui um post que tem o que você quer : http://www.guj.com.br/java/9440-diferenca-entre-datas
Leia o post do jose_castilho
T+
sei que vai gerar discussões mas, pessoalmente não gosto desse esquema de pegar os milessegundos e ficar multiplicando e dividindo, prefiro fazer assim:
private int diffDate(Date dInicial, Date dFinal, int diffField)
{
int diff = 0;
GregorianCalendar gcInicial = new GregorianCalendar();
GregorianCalendar gcFinal = new GregorianCalendar();
gcInicial.setTime(dInicial);
gcFinal.setTime(dFinal);
if (gcInicial.before(gcFinal))
{
while (gcInicial.before(gcFinal))
{
diff++;
gcInicial.add(diffField, 1);
}
}
else
{
diff = -1;
}
return (diff);
}
e a chamada ficaria assim
public static void main(String[] args)
{
@SuppressWarnings("deprecation")
Date date1 = new Date(2011 - 1900, Calendar.JANUARY, 1);
Date date2 = new Date();
DiffDatas dd = new DiffDatas();
System.out.println("Date 1: " + date1);
System.out.println("Date 2: " + date2);
System.out.println("Diferença: " + dd.diffDate(date1, date2, Calendar.MONTH));
}
quer a diferença em dias, muda o 3o parametro para Calendar.DAY_OF_MONTH, quer em anos, muda para Calendar.YEAR
e se retornar -1 é pq a data inicial é maior que a final
Não tem que gerar discussões, se te atendeu assim, blz… É até uma maneira interessante, mas prefiro a outra implementação mesmo.
agradeço a comunidade, pela seriedade e rapidez com que me responderam, obrigado mesmo.
rosiel