Calculando a idade com JavaScript

Calculando a idade com JavaScript

Hoje em dia é comum utilizar bibliotecas para facilitar o nosso trabalho com JavaScript, no caso das datas, é comum o uso da biblioteca moment.js.

Porém, para determinadas necessidades, pode ser mais prático utilizar os próprios recursos do JavaScript. É o que vamos ver agora, com um exemplo de cálculo de idade. Vamos calcular idade pela data de nascimento usando JavaScript.

Em um primeiro momento, parece algo simples, basta pegar o ano atual e subtrair do ano da data informada. Um exemplo:

var ano_atual = new Date().getFullYear();

var ano_informado = 1970;

console.log(ano_atual - ano_informado);

No JavaScript, temos um objeto chamado "Date" que nos permite trabalhar com datas. Entre os vários métodos, existe um chamado "getFullYear", que retorna o ano com 4 dígitos. O objeto "Date" não pode ser utilizado diretamente, ele precisa primeiro ser instanciado, por isso o "new" no começo.

Outros métodos comuns do objeto Date são "getMonth" que retorna o mês atual e "getDate" que retorna a data atual. Uma observação, o "getMonth" retorna um número de 0 a 11, sendo "0" para janeiro e "11" para dezembro.

Perceba que estamos informado diretamente o ano, mas, seria melhor ele pegar esta informação de uma data completa. Vamos fazer a seguinte alteração:

var ano_atual = new Date().getFullYear();

var data_aniversario = "01/05/1970";

var ano_informado = data_aniversario.split('/')[2];

console.log(ano_atual - ano_informado);

Veja que a data foi inserida no formato DD/MM/YYYY. Como a data é uma string, ela possui um método chamado "split", que permite quebrar a string num array utilizando o "/" como separador. Desta forma, quebramos a data num array de 3 posições. Como o elemento inicial do array começa na posição zero, estamos pegando a segunda posição do array (último elemento ou terceiro elemento se preferir), isso nos permite recuperar o ano.

Apesar do código funcionar, existe um problema. Não estamos considerando o resto da data no cálculo. Por exemplo, se a data atual for "10/10/2019" e a data informada for "01/05/1970", o resultado vai dar 49, sendo que o correto seria 48.

Para facilitar e permitir o reaproveitamento deste código, vamos criar uma função. O código final você pode conferir a seguir:

function calculaIdade(dataNasc){ 

var dataAtual = new Date();

var anoAtual = dataAtual.getFullYear();

var anoNascParts = dataNasc.split('/');

var diaNasc =anoNascParts[0];

var mesNasc =anoNascParts[1];

var anoNasc =anoNascParts[2];

var idade = anoAtual - anoNasc;

var mesAtual = dataAtual.getMonth() + 1; 

//Se mes atual for menor que o nascimento, nao fez aniversario ainda;  

if(mesAtual < mesNasc){

idade--; 

} else {

//Se estiver no mes do nascimento, verificar o dia

if(mesAtual == mesNasc){ 

if(new Date().getDate() < diaNasc ){ 

//Se a data atual for menor que o dia de nascimento ele ainda nao fez aniversario

idade--; 

}

}

return idade; 

}

console.log(calculaIdade('31/12/1970'));

Está começando e deseja saber o que precisa estudar de HTML e JavaScript? Não deixe de conferir os roteiros de estudo de HTML e JavaScript!. São dezenas de conteúdos para você melhorar suas habilidades.

Roteiro de estudos - HTML e CSS

Roteiro de estudos - Javascript

Outros conteudos que podem ser de seu interesse

Plataformas para trabalho freelancer
02/08/2020JAVASCRIPT

Plataformas para trabalho freelancer

Descubra algumas das mais populares plataformas para trabalho freelancer

Saiba mais...
As mensagens de erro mais comuns no JavaScript
04/10/2020JAVASCRIPT

As mensagens de erro mais comuns no JavaScript

Um resumo com as mensagens de erro mais comuns do JavaScript

Saiba mais...

Conteúdo sobre banco de dados sem complicação!