[rails-br] diferença de data em horas

454 views
Skip to first unread message

Thiago Freitas

unread,
May 14, 2010, 8:16:48 AM5/14/10
to rail...@googlegroups.com
Pessoal, eu tenho uma data que pego de um site remoto com mechanize, a data vem:

13/05/2010 11:15

OBS: Vem como string

como eu pego essa informação, pega a minha data atual e minha hora atual e faço algo como:

a diferença de datas é de 19 horas e 13 minutos.

Como faço isso?

--
<°)))><

"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
--------------
"Confia no SENHOR de todo o teu coração e não te estribes no teu próprio entendimento." Pv 3:5
"Reconhece-o em todos os teus caminhos, e ele endireitará as tuas veredas." Pv 3:6
-------------
"Respondeu-lhes Jesus: Em verdade, em verdade eu vos digo: antes que Abraão existisse, EU SOU." Jo 8:58

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

Marcio Aun Migueis

unread,
May 14, 2010, 9:04:36 AM5/14/10
to rail...@googlegroups.com
Será que você não tem que dar um parse neste string e criar uma data ? Eu acho que precisaria inverter dia/mes/ano para ano-mes-dia . Dai você usa o "-" entre datas

Marcio

Thiago Freitas

unread,
May 14, 2010, 10:00:58 AM5/14/10
to rail...@googlegroups.com
Sim,

fazendo o Parse, como faço esse calculo que perguntei?

Marcio Aun Migueis

unread,
May 14, 2010, 10:15:52 AM5/14/10
to rail...@googlegroups.com
Tiago,

   d1  = Time.now - 3.hours
   d2  = Time.now
   d2 - d1

  Você terá a diferença em segundos, e precisa traabalhar em cima deste número para ter hora:minuto:segundo

  (d2-d1) / 3600 dá a diferença em horas

Robson Mendonça

unread,
May 14, 2010, 10:29:12 AM5/14/10
to rail...@googlegroups.com
Ae tio,

você pode fazer o parse na data que você tem:

data_hora = "13/05/2010 11:15".split(" ")
data = (data_hora[0].split(/\//).reverse * "-" << " " << data_hora[1]).to_time
now = Time.now
diferenca = now - data

Dessa forma você terá o numero de segundos entre as duas datas, dae é só seguir o conselho do Marcio e calcular.

Falow

Robson Mendonça

Thiago Freitas

unread,
May 14, 2010, 2:53:02 PM5/14/10
to rail...@googlegroups.com
Fiz o parse, mas os valores não batem. vejam:

    data_postagem = Time.parse(DateTime.strptime( @infor.last[0]  , '%d/%m/%Y %H:%M').to_s)
    data_atual        = Time.now.localtime

para vcs entenderem, meus valore são:
data_postagem é igual a  13/05/2010 11:15  (convertido em Time claro)
data_atual é igual a 14/05/2010 15:50  (convertido em Time claro)

meu calculo é:

dif = data_atual - data_postagem

puts (dif / 86400).round # AQUI FUNCIONA, 1 DIA DE DIFERENÇA
puts ((dif % 86400).round / 3600) # AQUI NÃO FUNCIONA!!!!!!

na hora de calcular as horas de diferença, aparece 9!!!  e são 4!!!!!

ou seja, deveria ser 1 dia e 4 horas de diferença!

Como calculo isso corretamente?

Marcio Aun Migueis

unread,
May 14, 2010, 2:56:29 PM5/14/10
to rail...@googlegroups.com
Probrlmas de timezone?   Time.current ?

Thiago Freitas

unread,
May 14, 2010, 2:58:09 PM5/14/10
to rail...@googlegroups.com
Estou usando em minha maquina local, alem do mais usei com o metodo "localtime" e ainda sim não funciona.
Reply all
Reply to author
Forward
0 new messages