Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de Javascript
SEÇÕES
Manuais relacionados
+Workshop de Javascript
Categorias
+Javascript

Índice do Manual Workshop de Javascript
+ Efeitos rápidos com Javascript
+ Abertura e configuração de popups com Javascript
+ Acessso por senha Javascript
+ Rollover com Javascript
+ Navegador dinâmico Javascript
+ Navegador desdobrável
+ Navegador desdobrável com frames
+ Texto em movimento na barra de estado
+ Marcar ou desmarcar todos os checkboxes de um formulário com Javascript
+ Desabilitar o menu contextual do navegador com Javascript
+ Relógio em Javascript
+ Scripts diferentes para cada navegador
+ Tamanho dos campos relativo ao navegador
+ Estilos diferentes para cada navegador
+ Tabela de cores com Javascript
+ Sub-menu em outra janela
+ Degradê de cor Javascript
+ Validar inteiro no campo de formulário
+ Exemplos de funcionamento da classe String
+ Exemplo de funcionamento de Date
+ Link aleatório Javascript
+ Geração de números aleatórios Javascript
+ Comprovar se as senhas são iguais
+ Ex. de trabalho com formulários. Calculadora simples
+ Enviar ao navegador a outra página se não tiver Javascript
+ Confirmação de envio de formulário
+ Javascript para se posicionar em um select
+ Inibir um campo texto de formulário com Javascript
+ Camadas com Internet Explorer 5, 6, Netscape 6, 7 e Opera
+ Mostrar e ocultar camadas com IE 5,6 NS 6,7
+ Movimento de Camadas com IE 5,6 NS 6,7
+ Escritura nas Camadas com IE 5, 6, NS 6, 7
+ Como iluminar tabelas, células ou filas
+ Inibir radio button com Javascript
+ Atualizar dois frames com um só link
+ Calcular a idade em Javascript
+ Iluminar formulários com CSS e Javascript
+ Autozoom de texto com Javascript
+ Javascript para evitar que a página se mostre em um frame
+ Elementos de formulário select associados
+ Conta os caracteres escritos em um textarea
+ Passo de parâmetros em HTML com client-side Javascript
+ Moldura dinâmica em Javascript com texto que muda
+ Criação de gráficos de barras com Javascript
+ Jogos em Javascript
+ Cross-Browser. DHTML compatível com todos os navegadores.
+ HTML Area. Editor WYSIWYG
+ Ocultar um e-mail de um link para evitar o spam
+ Função em Javascript para a inserção de datas
+ DHTML Calendar
+ Gerar uma cor aleatória com Javascript
+ A aprendizagem na Internet
+ Menu Dinâmico com Javascript
+ Página que muda aleatoriamente a cor de fundo
+ Script de recarregamento da página com Javascript
+ Mudar a cor às células de uma tabela com Javascript
+ Pop-ups DHTML – OpenPopups
+ Validar a extensão de um arquivo a subir com Javascript
+ Detectar a resolução da tela do usuário com Javascript
+ Esconder a URL de um link na barra de estado
+ Como integrar conteúdo RSS em minha página?
+ Fazer com que um iframe se ajuste à altura de uma janela com Javascript
+ É vantajoso o uso de ParseInt para validar números?
+ Efeito para desabilitar/habilitar o fundo da Página
+ Validar número de checkbox marcados com Javascript
+ Evitar que um textarea supere um número de caracteres permitidos

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Calcular a idade em Javascript

Realizamos 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.

Referência: Para aprender algo que nos sirva de base no cálculo de datas seria interessante ler o artigo Clase Date 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.

Referência: Os métodos da classe String podem ser vistos no artigo Classe String em Javascript.

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.
  1. Se o mês atual for menor que o mês de nascimento. Então, é porque ainda não cumpriu os anos ainda neste período anual. (Os anos, no exemplo anterior, seriam 31)
  2. Se o mês atual for maior que o mês de nascimento, quer dizer que essa pessoa sim que já celebrou seu aniversário este ano. (Os anos, no exemplo anterior, seriam 32)
  3. Se os dois meses forem iguais, temos que observar o dia de uma maneira similar a como foi realizado com os meses:
    1. Se o dia atual for menor que o dia de nascimento, é porque faltam uns dias ainda para seu aniversário (Visto o exemplo anterior, os anos seriam 31).
    2. Se o dia atual for maior ou igual que o dia de nascimento é porque já cumpriu anos (Visto o exemplo anterior, os anos seriam 32).
O script para calcular a idade

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
}


Nota: Para entender esta função será necessário saber que, quando se executa return dentro de uma função, se devolve o valor indicado e se sai da função, sem que se possa executar outras sentenças que existam debaixo do return.

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Workshop de Javascript

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em Javascript


Comentário sem rever
Entre os comentários não revistos podem ter alguns interessantes que tenham sido enviado recentemente.
 Foi encontrado um comentário sem rever

VerVer os comentários não revistos



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites