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.