Imprimir quantidade de dias, meses e ano atraves de uma data
3 respostas
Icavalera
Preciso imprimir a quantidade de anos, meses e dias de uma pessoa através da data de nascimento.
Exemplo : 12Anos 3Meses 20Dias
Consegui chegar perto, mas dai veio as validações de meses com 30 dias ou meses com 31 dias ainda tem fevereiro e anos biossestos hahaha
Alguem tem alguma idéia ae?
camarada, uma vez fiz uma parada dessas, lembro mais ou menos, então, testa ae e posta o resultado:
observe o detalhe da constante MONTH de calendar que não é de 1 a 12, mas de 0 a 11, sendo 0 janeiro e 11 dezembro. Então, na criação da data (1973, 7, 25) deverah criar a data de 25/08/1973.
DateFormatdf=newSimpleDateFormat("dd/MM/yyyy");Calendarnascimento=newGregorianCalendar(1973,7,25);Calendarhoje=Calendar.getInstance();// (13/04/2009) System.out.println(nascimento.compareTo(hoje));intanos=hoje.get(Calendar.YEAR)-nascimento.get(Calendar.YEAR);// 36 anos (porém ainda não, só em agosto)if(hoje.get(Calendar.MONTH)<=nascimento.get(Calendar.MONTH))// então vamos ver se hoje já chegou em agostoif(hoje.get(Calendar.DAY_OF_MONTH)<nascimento.get(Calendar.DAY_OF_MONTH))// e se hoje é o dia 25 (então seria o aniversário)--anos;// não é, então a criatura tem 35 anos// anos: 35intmeses=hoje.get(Calendar.MONTH)-nascimento.get(Calendar.MONTH);// hoje seria a diferença de -4 meses, o que é incorreto para a proposição// então precisamos verificar e ajustar a paradameses=(meses<0)?(12+meses):meses;intdias=hoje.get(Calendar.DAY_OF_MONTH)-nascimento.get(Calendar.DAY_OF_MONTH);// diferença de dias (não pode ser negativodias=(dias<0)?-dias:dias;
Icavalera
Eu consegui aqui …
Obrigado pela ajuda!!!
privateStringcalculaIdade(Dated1,Dated2){intmonthDay[]={31,-1,31,30,31,30,31,31,30,31,30,31};CalendarfromDate=Calendar.getInstance();CalendartoDate=Calendar.getInstance();intyear=0;intmonth=0;intday=0;intincrement=0;if(d1.compareTo(d2)>0){fromDate.setTime(d2);toDate.setTime(d1);}else{fromDate.setTime(d1);toDate.setTime(d2);}if(fromDate.get(Calendar.DAY_OF_MONTH)>toDate.get(Calendar.DAY_OF_MONTH)){increment=monthDay[fromDate.get(Calendar.MONTH)-1];}if(increment==-1){GregorianCalendargc=newGregorianCalendar();if(gc.isLeapYear(fromDate.get(Calendar.YEAR))){increment=29;}else{increment=28;}}if(increment!=0){day=(toDate.get(Calendar.DAY_OF_MONTH)+increment)-fromDate.get(Calendar.DAY_OF_MONTH);increment=1;}else{day=toDate.get(Calendar.DAY_OF_MONTH)-fromDate.get(Calendar.DAY_OF_MONTH);}if((fromDate.get(Calendar.MONTH)+increment)>toDate.get(Calendar.MONTH)){month=(toDate.get(Calendar.MONTH)+12)-(fromDate.get(Calendar.MONTH)+increment);increment=1;}else{month=(toDate.get(Calendar.MONTH))-(fromDate.get(Calendar.MONTH)+increment);increment=0;}year=toDate.get(Calendar.YEAR)-(fromDate.get(Calendar.YEAR)+increment);return(year+" anos "+month+", meses "+day+", dias");}