diferença entre data em meses

4 respostas
M

ola pessoal
preciso saber a diferenca entre 2 datas em meses
tentei o seguinte, deu certo para datas do mesmo ano
de ano diferente não da certo
se for a data de hoje e inicio de janeiro de 2011 retorna 2 (variavel mes )
se for a data de hoje e inicio de dezembro de 2010 retorna -9, tinha que retorna 3
como acertar isso
obrigado

Calendar data_aqui = Calendar.getInstance();
		Calendar data_hoje = Calendar.getInstance();
		data_aqui.setTime( getdata_inc() );
		data_hoje.setTime( new Date() ) ;
		int mes = 0 ;
		mes = data_hoje.get(Calendar.MONTH) - data_aqui.get(Calendar.MONTH);

4 Respostas

thorian-maskier

Isso é questão de lógica amigo, e não de codificação. Não estou lhe ajudando em nada te dando mastigado isso…mas vamos lá.

Quando a data inicial for maior q a data atual (não sei se essa data pode ser maior q a data atual no seu código…) basta adicionar o seguinte trecho antes do cálculo que efetuas hoje para calcular a diferença:

((dataAtual - dataInicial)*12)

o trecho acima dá o total de meses desses 2 anos…é só calcular isso com seu -9 e pronto, dá o total certo de meses.

thorian-maskier

Isso é questão de lógica amigo, e não de codificação. Não estou lhe ajudando em nada te dando mastigado isso…mas vamos lá.

Quando a data inicial for maior q a data atual (não sei se essa data pode ser maior q a data atual no seu código…) basta adicionar o seguinte trecho antes do cálculo que efetuas hoje para calcular a diferença:

Calendar data_aqui = Calendar.getInstance(); Calendar data_hoje = Calendar.getInstance(); data_aqui.setTime( getdata_inc() ); data_hoje.setTime( new Date() ) ; int mes = 0 ; mes = ((dataAtual - dataInicial)*12) - (data_hoje.get(Calendar.MONTH) - data_aqui.get(Calendar.MONTH));

M

o que é dataatual ? e datainicial ?

sim, a data_inc nunca podera ser maior que a data_hoje

Polverini

Cara só uma dica da uma olhada no JodaTime ajuda muito com esses tipos de trabalho, uso bastente.

http://joda-time.sourceforge.net/

Criado 3 de março de 2011
Ultima resposta 3 de mar. de 2011
Respostas 4
Participantes 3