Cálculo de redução de ano, mês, dias

2 respostas
G

Estou com um problema em um código que está calculando errado a redução de 1/5 de ano, mes e dias. Exemplo: dada a entrada de 2 anos, 10 meses e 25 dias, o resultado deveria ser 2 anos, 3 meses e 26 dias.

O resultado que consegui em uma primeira tentativa foi: 1 ano, 7 meses e 5 dias, o código foi esse:

public String converterPena(int anos) { long tempoReduzido = anos * 31536000000L - (anos * 31536000000L) / 5; long days = tempoReduzido / (24 * 60 * 60 * 1000); ano = days / 365; meses = (days % 365) / 30; dias = (days - days % 365) % 30; // System.out.println(ano + " ano(s) " + meses + " mes(es) " + dias + // " dia(s)"); String res = ano + " ano(s) " + meses + " mes(es) " + dias + " dia(s)"; return res; }
O segundo resultado que obtive alterando o código para a mesma entrada foi: 2 anos, 2 meses, 16 dias. com o código:

public String converterPena(int anos, int mes, int dia) {
		double tempoTotal = (anos * 31536000000L) + (mes * 2628000000L)
				+ (dia * 86400000);
		double tempoReduzido = tempoTotal - (tempoTotal * 1) / 5; // modifiquei para adaptar ao calculo de 2/3
		double days = tempoReduzido / (24 * 60 * 60 * 1000);
		ano = days / 365;
		ano1 = (int) (ano); // valor inteiro do ano
		restoAno = ano - ano1; // valor decimal do ano 
		mes1 = (restoAno * 12); // valor decimal do ano transformado em mes
		mes2 = (int) (mes1); // valor inteiro do mes
		restoMes = mes1 - mes2; // valor decimal do mes
		dia1 = (restoMes * 30); // valor decimal do mes transformado em dias
		dia2 = (int) dia1; 

		String res = ano1 + " ano(s) " + mes2 + " mes(es) " + dia2 + " dia(s)";
		return res;
	}

Existe uma página que faz o mesmo em php (http://www.nferraz.floripa.com.br/4penas.php), mas preciso desenvolver um que funcione para desktop, offline.

2 Respostas

E

2 anos, 10 meses, 25 dias = 365 * 2 + 10 * 30 + 25 = 1055 dias

Reduzir a pena de um quinto quer dizer multiplicar 1055 por (1 - 1/5) ou seja, 844 dias

844 / 365 = 2 anos, resto 114
114 / 30 = 3 meses, resto 24 dias :frowning: :frowning: :frowning:

Hum… de onde apareceram os outros 2 dias? Não quero ficar preso nem mais um dia :frowning: :frowning: :frowning:

Rodrigo_Sasaki

Eu estava pensando justamente nesses 2 dias, porque apesar de contar um mes como 30 dias, no final nunca vai dar certo, né… pois se for pensar em 10 meses, que no cálculo equivalem a 300 dias, mas se for pensar de Março até Dezembro, teriamos por volta de 305 dias, não?

Criado 8 de junho de 2012
Ultima resposta 9 de jun. de 2012
Respostas 2
Participantes 3