Calcular quantidade de horas

590 views
Skip to first unread message

jniltinho

unread,
Apr 11, 2012, 10:29:04 AM4/11/12
to web2py-users-brazil
Bom dia pessoal,

Gostaria de saber se o web2py tem algum função para calcular a
quantidade de horas em um intervalo de tempo

Exemplo:
Dois Campos no bancos de dados com datetime (Campo inicio, Campo fim)

Inicio e fim, gostaria de calcular esse intervalo de tempo.


Obrigado

Bruno Rocha

unread,
Apr 11, 2012, 10:55:36 AM4/11/12
to web2py-us...@googlegroups.com
Python datetime module


>>> import datetime
>>> data1 = datetime.datetime(2010,01,01)
>>> data2 = datetime.datetime.now()
>>> diff = data1 - data2
>>> print diff
-832 days, 12:05:54.523998
>>> diff
0: datetime.timedelta(-832, 43554, 523998)

Agora para saber em horas só calcular os dias, sabendo que os dias tem 24hs e etc...

2012/4/11 jniltinho <jnil...@gmail.com>

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en



--

Bruno Rocha

unread,
Apr 11, 2012, 10:58:35 AM4/11/12
to web2py-us...@googlegroups.com
também existe este módulo: http://labix.org/python-dateutil

Ovidio Marinho

unread,
Apr 11, 2012, 11:08:01 AM4/11/12
to web2py-us...@googlegroups.com
jquery prattydate pode fazer isto tambem!
      


       Ovidio Marinho Falcao Neto
                Web Developer
             ovid...@gmail.com 
          ovidio...@itjp.net.br
                 ITJP - itjp.net.br
               83   8826 9088 - Oi
               83   9334 0266 - Claro
                        Brasil
              



jniltinho

unread,
Apr 11, 2012, 1:22:15 PM4/11/12
to web2py-users-brazil
Obrigado a todos, consegui fazer dessa forma.

Usando esse modulo que o Bruno sugeriu.

python-dateutil (http://labix.org/python-dateutil)

import datetime
from dateutil.parser import *



data1 = parse("2012-04-11 00:59:16")
data2 = datetime.datetime.now()
diff = data2 - data1
print diff

13:19:05.966002


Só não consegui tirar o que vem antes do ponto.

Bruno Rocha

unread,
Apr 11, 2012, 1:41:31 PM4/11/12
to web2py-us...@googlegroups.com
diff.strftime("%H:%m:%s")

dá uma olhada no strftime

2012/4/11 jniltinho <jnil...@gmail.com>
--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en

jniltinho

unread,
Apr 11, 2012, 2:13:01 PM4/11/12
to web2py-users-brazil

Estrando Bruno, estou recebendo o seguinte erro:

>>> diff.strftime("%H:%M:%S")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'datetime.timedelta' object has no attribute
'strftime'



On 11 abr, 14:41, Bruno Rocha <rochacbr...@gmail.com> wrote:
> diff.strftime("%H:%m:%s")
>
> dá uma olhada no strftime
>
> 2012/4/11 jniltinho <jnilti...@gmail.com>

Matheus Lima

unread,
Apr 11, 2012, 3:49:27 PM4/11/12
to web2py-us...@googlegroups.com
Não sei se é a melhor solução, mas pode ser uma solução temporária:

>>> print '%s:%s:%s' % (diff.seconds/3600, diff.seconds%3600/60, diff.seconds%3600%60)
Att,

Matheus dos Santos Lima        
Bel. em Sistemas de Informação - UFS (2011.2)

Matheus Lima

unread,
Apr 11, 2012, 4:02:31 PM4/11/12
to web2py-us...@googlegroups.com
Outra forma:

>>> import time
>>> time.strftime("%H:%M:%S",time.gmtime(diff.seconds))
'07:03:59'

jniltinho

unread,
Apr 11, 2012, 4:21:46 PM4/11/12
to web2py-users-brazil

Opa Matheus,

Funcionou.

Já tinha feita assim:

import datetime
from dateutil.parser import *


data1 = parse("2012-04-11 00:59:16")
data2 = datetime.datetime.now()
diff = data2 - data1
diff = str(diff).split('.', 1)[0]
print diff


Mas sua solução ficou melhor.

On 11 abr, 17:02, Matheus Lima <matheus...@gmail.com> wrote:
> Outra forma:
>
> >>> import time
> >>> time.strftime("%H:%M:%S",time.gmtime(diff.seconds))
>
> '07:03:59'
>
> Em 11 de abril de 2012 16:49, Matheus Lima <matheus...@gmail.com> escreveu:
>
>
>
>
>
>
>
>
>
> > Não sei se é a melhor solução, mas pode ser uma solução temporária:
>
> > >>> print '%s:%s:%s' % (diff.seconds/3600, diff.seconds%3600/60,
> > diff.seconds%3600%60)
>
> > *
> > *
> > *Matheus dos Santos Lima     ** <http://twitter.com/matheeusLimaaa> <http://www.orkut.com.br/Main#Profile?rl=mp&uid=6921349383894587556>
> >   <http://www.facebook.com/profile.php?id=100001639854566> *
> > Bel. em Sistemas de Informação - UFS (2011.2)
> > CSM <http://www.scrumalliance.org/profiles/117413-matheus-dos-santos-lima>
>
> --
> Att,
> *
> *
> *Matheus dos Santos Lima     ** <http://twitter.com/matheeusLimaaa>
> <http://www.orkut.com.br/Main#Profile?rl=mp&uid=6921349383894587556>
>   <http://www.facebook.com/profile.php?id=100001639854566> *
> Bel. em Sistemas de Informação - UFS (2011.2)
> CSM <http://www.scrumalliance.org/profiles/117413-matheus-dos-santos-lima>

jniltinho

unread,
Apr 11, 2012, 4:25:29 PM4/11/12
to web2py-users-brazil

Assim ficou meu código:
Joguei em Modules da minha APP


# -*- coding: utf-8 -*-


import time
import datetime
from dateutil.parser import *



def sum_date(hora_inicio, hora_fim):
data1 = parse(hora_inicio)
data2 = parse(hora_fim)
diff = data2 - data1
return time.strftime("%H:%M:%S",time.gmtime(diff.seconds))

jniltinho

unread,
Apr 12, 2012, 4:49:07 PM4/12/12
to web2py-users-brazil

O código é mais simples que eu pensei no web2py.

(hora_fim - hora_inicio)


Criei um virtualfield
Horas.soma = Field.Virtual(lambda row: (row.horas.data_saida -
row.horas.data_inicio))


Funcionou perfeitamente
Reply all
Reply to author
Forward
0 new messages