duvida com data

2 views
Skip to first unread message

Thiago Freitas

unread,
Dec 28, 2009, 10:19:51 AM12/28/09
to rail...@googlegroups.com
pessoal, veio uma data do meu form do tipo string via POST no seguinte formato:

"28/12/1987"

essa data é de nascimento.

Data esta data como faço para saber a idade exata da pessoa?

Eu estava fazendo assim:

ano_atual =  DateTime.now.year.to_f
ano_nasc  = data[6,10].to_f
   
return ano_atual - ano_nasc

OBS: data = "28/12/1987"

ele ate acerta as vezes, o problema é:

Hj é o ano de 2009. 2009 - 1987 = 22, isso esta ERRADO, pq a pessoa faz hj 23 anos.

Como descobrir a idade real?

--
"Ao que está assentado sobre o trono, e ao Cordeiro, sejam dadas ações de graças, e honra, e glória, e poder para todo o sempre." Ap 5:13

Shairon Toledo

unread,
Dec 28, 2009, 10:52:36 AM12/28/09
to rail...@googlegroups.com
>> birthday = "28/12/1987"
=> "28/12/1987"
>> birthday = birthday.split(/\//).reverse * '-'
=> "1987-12-28"
>> birthday = Date.parse birthday
=> Mon, 28 Dec 1987
>> (Date.today - birthday).div 360 
=> 22


2009/12/28 Thiago Freitas <thiagos...@gmail.com>

--

Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.



--
[ ]'s
Shairon Toledo
http://www.google.com/profiles/shairon.toledo

Shairon Toledo

unread,
Dec 28, 2009, 10:53:23 AM12/28/09
to rail...@googlegroups.com
365

2009/12/28 Shairon Toledo <shairon...@gmail.com>

fernando albernaz

unread,
Dec 28, 2009, 11:05:42 AM12/28/09
to rail...@googlegroups.com
nossa shairon... caraio...  q simples... q foda...
valeu cara...

2009/12/28 Shairon Toledo <shairon...@gmail.com>

Jonathan Calixto

unread,
Dec 28, 2009, 11:36:09 AM12/28/09
to rail...@googlegroups.com
Você pode utilizar este código também:

  # calcula a idade da pessoa instanciada com base na sua data de nascimento
  def idade(data_nascimento)
    idade_calculada = {:ano => nil, :mes => nil, :dia => nil}

    hoje = Date.today
    if data_nascimento.present?
      idade_calculada[:ano] = hoje.year - data_nascimento.year
      if (hoje.month < data_nascimento.month) or (hoje.month == data_nascimento.month and hoje.day < data_nascimento.day)
        idade_calculada[:ano] -= 1
      end
      idade_calculada[:mes] = hoje.month - data_nascimento.month
      if (hoje.month < data_nascimento.month) or (hoje.month == data_nascimento.month and hoje.day < data_nascimento.day)
        idade_calculada[:mes] += 12
      end
      idade_calculada[:dia] = hoje.day - data_nascimento.day
      if hoje.day < data_nascimento.day
        idade_calculada[:mes] -= 1
        idade_calculada[:dia] += hoje.last_month.at_end_of_month.day
      end
    end
    # retorna um hash da idade descriminando a quantidade de dias, meses e anos que a pessoa possui
    return idade_calculada
  end








2009/12/28 fernando albernaz <albe...@gmail.com>



--


Atenciosamente,

Jonathan Celestino Calixto

Wilker

unread,
Dec 28, 2009, 11:48:20 AM12/28/09
to rail...@googlegroups.com
Outro snippet pra vc ;)

aniversarion = '15/01/1987'
cur = Date.strptime(aniversario, "%d/%m/%Y")
now = DateTime.now
old = now.year - cur.year
old -= 1 if (now.month < cur.month or (now.month == cur.month and now.day < cur.day))

funciona e eh curtinho :)
---
Wilker Lúcio
Gerente de Tecnologia
Caju Agência Digital
http://www.caju.nu
+55 81 87417674


2009/12/28 Jonathan Calixto <jonathan...@gmail.com>

Jonathan Calixto

unread,
Dec 28, 2009, 2:47:04 PM12/28/09
to rail...@googlegroups.com
concordo plenamente, pois o meu calcula a quantidade de meses e dias, para calcular a idade somente em ano a o que o @wilker sugeriu é perfeitamente óbvio, que corresponda a parte do codigo

      idade_calculada[:ano] = hoje.year - data_nascimento.year
      if (hoje.month < data_nascimento.month) or (hoje.month == data_nascimento.month and hoje.day < data_nascimento.day)
        idade_calculada[:ano] -= 1
      end

que eu havia sugerido. mas se alguem precisar este codigo calcula os anos, meses e dias que de uma data, exemplo:
25 anos, 10 meses e 5 dias

valeu @wilker


Atenciosamente,

Jonathan Celestino Calixto

G. Sobrinho

unread,
Dec 28, 2009, 2:54:51 PM12/28/09
to rail...@googlegroups.com
distance_of_time_in_words e time_ago

Não fazem o que vocês precisam?

2009/12/28 Jonathan Calixto <jonathan...@gmail.com>

--

Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.



--
Cordialmente,

Gabriel Sobrinho
Diretor de desenvolvimento

Hite - Comunicação Digital e Mídia Interativa
http://www.hite.com.br/

+55 31 8775 8378
Reply all
Reply to author
Forward
0 new messages