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

Separando um array de strings em conjuntos de arrays ordenados alfabeticamente com JavaScript
19/03/2023JAVASCRIPT

Separando um array de strings em conjuntos de arrays ordenados alfabeticamente com JavaScript

Veja várias formas de separar um array de string com JavaScript

Saiba mais...
Criar um QRCode sem programação
14/11/2019JAVASCRIPT

Criar um QRCode sem programação

Aprenda como gerar um QRCode com apenas 1 linha

Saiba mais...

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