Lógica em um método de tratamento de datas

2 respostas
igorfqueirozz

Galera tô com um problemão pra ajustar uma classe com esse algoritmo embaixo.
Agradeceria quem pudesse me ajudar.

Segue um Algoritmo:

Caso de uso:

criar um método que receberá dois parâmetros do tipo Date e retornará um inteiro com o
somatório dos dias entre o período inicial e final seguindo as regras de negócio citadas abaixo:

ex: public int diferencaEntreDatas(GregorianCalendar param1, GregorianCalendar param2){
	//implementação do método
	}

REGRAS DE NEGÓCIO:

Um ano completo é considerado do primeiro dia do ano ao ultimo dia do ano: 01/01/anoInicial à 31/12/anoFinal.

Todo ano completo é considerado de 365 dias (desconsiderando assim os anos bissextos).

TODO mês Inicial com dias quebrados é considerado um mês de 30 dias.

Todo mês completo dos anos das ‘pontas’ são considerados de 30 dias.

Considera-se o mês final completo das seguintes formas:

Caso o mês final seja Fevereiro, verifica se é um ano bissexto:
	se for: conta o mês completo com 29 dias
	senão: conta o mês completo com 28 dias.
Caso o mês final  seja de 30 ou 31 dias conta como mês completo com 30 dias ou 31;

2 Respostas

B

Baixe o Joda Time e dê uma olhada na interface Period, e converta-o para Days.

aquilante

Cara você pode usar a classe Calendar mesmo. Tu pode setar uma data ou usar a data corrente do dia

Calendar cal = new Calendar.getInstance; //Dia corrente

E para calcular a quantidade de dias em um intervalo de tempo tu pode usar essa formula e dividir pela diferença das datas

long diferenca = dataFinal.getTimeInMillis() - dataInicio.getTimeInMillis();

// Quantidade de milissegundos em um dia

int tempoDia = 1000 * 60 * 60 * 24;

long qtdDias = diferenca / tempoDia + 1

Espero ter ajudado

Criado 18 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 2
Participantes 3