Data retornar int

9 respostas
R

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

9 Respostas

drsmachado

Quer que adivinhemos também o teu signo?
Camarada, precisamos que você nos diga como está implementando isto, senão, fica impossível.

aechiara

vc quer a diferença em que unidade ??

dias, mês, ano, minutos, segundos, horas ??

J

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!

R

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

obrigado, eh exatamente o que preciso.

J

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+

aechiara

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

J

Não tem que gerar discussões, se te atendeu assim, blz… É até uma maneira interessante, mas prefiro a outra implementação mesmo.

R

agradeço a comunidade, pela seriedade e rapidez com que me responderam, obrigado mesmo.
rosiel

Criado 9 de junho de 2011
Ultima resposta 9 de jun. de 2011
Respostas 9
Participantes 4