Calculo de idade
Bom é a segunda vez que venho no fórum com a mesma função.
Pedi ajuda de vocês com o calculo de idade, vou expor e abaixo digo o problema.
JS:
function calculaIdade(){
$("#dt_nascimento, #dt_diagnostico_sintoma").change(function(){
var data_diag = $("#dt_diagnostico_sintoma").val();
var dt_nasc = $("#dt_nascimento").val();
$("#idade").val("");
var vt_nasc = dt_nasc.split("/");
var data_nascimento = vt_nasc[2]+"-"+vt_nasc[1]+"-"+vt_nasc[0];
var vt_diag = data_diag.split("/");
var data_diagnostico = vt_diag[2]+"-"+vt_diag[1]+"-"+vt_diag[0];
var now = new Date(data_diagnostico);
var today = new Date(data_diagnostico);
var yearNow = now.getYear();
var monthNow = now.getMonth();
var dateNow = now.getDate();
var dob = new Date(data_nascimento);
var yearDob = dob.getYear();
var monthDob = dob.getMonth();
var dateDob = dob.getDate();
var age = {};
var ageString = "";
var yearString = "";
var monthString = "";
var dayString = "";
yearAge = yearNow - yearDob;
if (monthNow >= monthDob)
var monthAge = monthNow - monthDob;
else {
yearAge--;
var monthAge = 12 + monthNow -monthDob;
}
if (dateNow >= dateDob)
var dateAge = dateNow - dateDob;
else {
monthAge--;
var dateAge = 31 + dateNow - dateDob;
if (monthAge < 0) {
monthAge = 11;
yearAge--;
}
}
age = {
years: yearAge,
months: monthAge,
days: dateAge
};
if ( age.years > 1 ) yearString = " years";
else yearString = " year";
if ( age.months> 1 ) monthString = " months";
else monthString = " month";
if ( age.days > 1 ) dayString = " days";
else dayString = " day";
if(age.years > 0){
$("#idade").val(age.years);
$('#idade_anos').attr("checked", true);
}else if(age.months > 0 ){
$("#idade").val(age.months);
$('#idade_mes').attr("checked", true);
}else if(age.days){
$("#idade").val(age.days);
$('#idade_dia').attr("checked", true);
}else if(age.days == 0){
$("#idade").val('1');
$('#idade_hora').attr("checked", true);
}
});
}
HTML:
<div class="espacamento" name="#7">
<legend>7 - Data do Diagnóstico</legend>
<input type="text" id="dt_diagnostico_sintoma" name="dt_diagnostico_sintoma" placeholder="__/__/____" required>
</div>
<div class="espacamento" name="#9">
<legend>9 - Data de Nascimento</legend>
<input type="text" id="dt_nascimento" name="dt_nascimento" placeholder="__/__/____" required>
</div>
<div id="campo_idade">
<div class="espacamento" name="#10">
<legend>10 - (ou) Idade</legend>
<input type="text" id="idade" name="nu_idade" disabled required>
</div>
<label><input type="radio" name="tipo_idade" value="1" id="idade_hora"/>1- Hora(s)</label>
<label><input type="radio" name="tipo_idade" value="2" id="idade_dia"/>2- Dia(s)</label>
<label><input type="radio" name="tipo_idade" value="3" id="idade_mes"/>3- Mês(es)</label>
<label><input type="radio" name="tipo_idade" value="4" id="idade_anos"/>4- Ano(s)</label>
</div>
Então, algumas contas ele faz certa, outras faz errado!!! :cry:
O calculo da idade, tem influência com a data de diagnostico.
Se eu coloco a data de diagnostico a mesma data de hoje ou coloco a 5 dias atras, ele leva isso tudo em consideração.
Se colocar o nascimento dia 10/03/2015 e o diagnostico tem como data hoje, tem que aparecer 9 dias.
Se colocar o nascimento dia 10/03/2015 e o diagnostico tem como data 15/03/2015, tem que aparecer 5 dias.
Até ai tudo bem, essas datas calculam certo.
Levando em consideração a data de diagnostico sendo hoje, exemplo, fiz exatamente nessa ordem:
05/04/1993 que é minha data de nascimento, ele calcula certo, mostra 21 anos.
02/03/2015 ele calcula certo, mostra 17 dias.
01/03/2015 ele calcula errado, mostra 21 dias.
07/03/2015 ele calcula certo, mostra 12 dias.
05/04/1993 volto com essa data e ele calcula errado, mostra 21 dias.
05/10/2014 ele calcula certo, mostra 5 meses.
05/03/2015 ele calcula errado, mostra 14 meses.
Conclusão, estou endoidando! :wacko:
Discussão (4)
Carregando comentários...