Calculate age in years using javascript

Asked

Viewed 5,628 times

2

How to calculate age from an input type="text" using javascript? I have the input:

<input style="width: 100%" type="text" readonly id="data_nascimento"/>

How to perform this calculation? The date format is "01/01/2015".

Do I need to convert to Object Date? How to Perform this procedure from the input content?

6 answers

7


Using Javascript only, you can use this function:

function calcularIdade(aniversario) {
    var nascimento = aniversario.split("/");
    var dataNascimento = new Date(parseInt(nascimento[2], 10),
    parseInt(nascimento[1], 10) - 1,
    parseInt(nascimento[0], 10));

    var diferenca = Date.now() -  dataNascimento.getTime();
    var idade = new Date(diferenca);

    return Math.abs(idade.getUTCFullYear() - 1970);
}

Fiddle: https://jsfiddle.net/kodrw5sj/

  • Thanks for the fiddle and the attention to format. Correct Answer.

1

function idade(d1, d2) {
  d2 = d2 || new Date();
  var diff = d2.getTime() - d1.getTime();
  return Math.floor(diff / (1000 * 60 * 60 * 24 * 365.25));
}
console.log(idade(new Date(1998, 09, 3)));

Jsfiddle

1

Check this function. I think it does what you want. I’m not sure about the date format.

function getAge(dateString) {
  var today = new Date();
  var birthDate = new Date(dateString);
  var age = today.getFullYear() - birthDate.getFullYear();
  var m = today.getMonth() - birthDate.getMonth();
  if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
    age--;
  }
  return age;
}
<input style="width: 100%" type="text" readonly id="data_nascimento" onBlur="getAge(this.value)" />

  • 1

    search writes the content of the links in your reply. Links can get off line and your reply is left without reference. Transcribe the content of the link in your reply.

1

If you can use momentjs, it will be simpler to do this calculation. Behold at this link:

var birthDay = "1984-10-22";
var age = Math.floor(moment(new Date()).diff(moment(birthDay),'years',true));
console.log(age);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>

-2

function nasc (timestamp){
    const today = new Date()
    const nascDate = new Date(timestamp)

    let nasc = today.getFullYear() - nascDate.getFullYear()
    const month = today.getMonth() - nascDate.getMonth ()

    if (month < 0 || month == 0 && today.getDate() < nascDate.getDate()){
        nasc = nasc -1
    }

    return nasc
}
  • 2

    Please describe your answer better

-2

function idade (timestamp){ 
    const hoje = new Date() //estou pegando a data do dia 
    const diaDoNiver = new Date(timestamp) // aqui se refere ao dia do aniversário

    // a linha abaixo nos dá um retorno de idade, baseando-se apenas no ano, //subitraindo do ano atual o ano de nascimento ex: 2021-1990 = 31.  
    let idade = today.getFullYear() - diaDoNiver.getFullYear() //é necessário usar //o let pq vai ser alterado
    // na linha abaixo vamos verificar está no mês do aniversário
    const mes = today.getMonth() - diaDoNiver.getMonth ()
    
    //a linha abaixo valida o mês e a data exata do aniversário
    
    if (mes < 0 || mes == 0 && hoje.getDate() < diaDoNiver.getDate()){
        idade = idade -1 /// se não for o mês e a data exata diminue 1
    }

    return idade
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.