|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net |
Calcular a idade em JavascriptRealizamos e explicamos uma função que recebe uma data de nascimento e devolve o número de anos desde a data, ou seja, a idade. Neste artigo vamos explicar uma função que calcula a idade de uma pessoa. Para isso recebe um string com a data de nascimento da pessoa e devolve o número de anos que tem. Estamos diante um exercício que ilustra muito bem o trabalho com datas em Javascript.
O método de trabalho Nós estamos pensando em receber uma data em formato português: algo como "12/10/1975", de tipo string. O primeiro será separar os diferentes valores de ano, mês, dia. Para isso, utilizamos o método split(), que pertence à classe String (tipo da data que vamos receber), que devolve um array com o valor de cada uma das partes da cadeia, utilizando como separador o caractere "/". Depois da separação, no array devolvido, deveríamos ter três campos, onde o primeiro (o de índice 0) salvará o dia, o segundo o mês e o terceiro o ano.
Vamos realizar a seguir algumas comprovações para certificarmos que as datas estejam corretas, ou seja, que temos um valor numérico como dia, outro como mês e outro como ano. Se não for assim, devolveremos false, que deveria se interpretar como que a função é incapaz de calcular a idade, porque a data de nascimento passada não é correta. A seguir restaremos o número de anos da data atual, que poderiam ser 2007, com o número de ano da data de nascimento, que será algo como 1975. Neste caso, daria 32, porém nós vamos considerar 31, pois não sabemos se a suposta pessoa já fez anos no ano curso, ou não. Ou seja, hoje que é junho, se fez anos em março, essa pessoa já teria 32 anos, porém se faz anos em agosto, teria agora 31 anos. Portanto, nosso próximo passo será saber em qual mês a pessoa fez anos e disso, poderíamos ter três casos.
Bom, com estas explicações esperamos que qualquer pessoa com um nível médio de Javascript, poderia realizar o código desta função, porém o objetivo é mostrar-lhes nossa proposta de código, que está comentada para que possa ser entendida facilmente. //calcular a idade de uma pessoa //recebe a data como um string em formato portugues //devolve um inteiro com a idade. Devolve false em caso de que a data seja incorreta ou maior que o dia atual function calcular_idade(data){ //calculo a data de hoje hoje=new Date() //alert(hoje) //calculo a data que recebo //descomponho a data em um array var array_data = data.split("/") //se o array nao tem tres partes, a data eh incorreta if (array_data.length!=3) return false //comprovo que o ano, mes, dia são corretos var ano ano = parseInt(array_data[2]); if (isNaN(ano)) return false var mes mes = parseInt(array_data[1]); if (isNaN(mes)) return false var dia dia = parseInt(array_data[0]); if (isNaN(dia)) return false //se o ano da data que recebo so tem 2 cifras temos que muda-lo a 4 if (ano<=99) ano +=1900 //subtraio os anos das duas datas edad=hoje.getYear()- ano - 1; //-1 porque ainda nao fez anos durante este ano //se subtraio os meses e for menor que 0 entao nao cumpriu anos. Se for maior sim ja cumpriu if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque os meses comecam em 0 return idade if (hoje.getMonth() + 1 - mes > 0) return idade+1 //entao eh porque sao iguais. Vejo os dias //se subtraio os dias e der menor que 0 entao nao cumpriu anos. Se der maior ou igual sim que já cumpriu if (hoje.getUTCDate() - dia >= 0) return idade + 1 return idade }
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada + 1 Comentário sem rever
Manuais relacionados com este artigo Dentro de Workshop de Javascript Anterior: Atualizar dois frames com um só link Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em JavascriptComentário sem rever
|
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |