Checar diferenca entre horas e fazer vezes outro campo

772 views
Skip to first unread message

Edgard

unread,
Mar 15, 2011, 12:19:33 PM3/15/11
to Django Brasil
Boa tarde,a
não me vem a cabeça como fazer uma comparação entre dois( inicio -
termino ) campos e realizar mais uma operacão matematica com um
terceiro campo(custo):

inicio = models.CharField(max_length=5)
termino = models.CharField(max_length=5)

Nesses dois campos acima serão inseridos horarios, preciso calcular o
numero de horas e fazer vezes o custo.
Coloquei CharField aqui pq não sei se devo utilizar o DecimalField na
campo custo.


custo = models.CharField(max_length=10)

Alguém pode me indicar um tutorial, dar uma luz?
Grato



Jonatas Oliveira

unread,
Mar 15, 2011, 12:43:51 PM3/15/11
to django...@googlegroups.com
No início e no termino o melhor é usar DateTimeField, dessa forma você vai poder fazer termino - inicio e o python vai retornar um timedelta, intervalo entre os tempos passados.

Depois é só pegar o valor do timedelta e multiplicar pelo custo.

Ah, se este custo for custo por hora é melhor ficar em DecimalField mesmo.

--
Jonatas Oliveira
jonatas....@gmail.com

> --
> Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
> Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Natasha Paiva

unread,
Mar 15, 2011, 12:45:44 PM3/15/11
to django...@googlegroups.com
Se entendi bem o que quer, tive que fazer algo semelhante há algumas semanas,
achei um tutorial básico [1] no google, foi o que me ajudou.

Espero ter ajudado.

[1] https://mrsantos76.wordpress.com/tag/diferenca-entre-datas/

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Att,
Natasha do Nascimento Paiva


Linux user: #
524303

LNCC - Laboratório Nacional de Computação Científica
MCT - Ministério da Ciência e Tecnologia


http://twitter.com/paivaNatasha

Edgard

unread,
Mar 15, 2011, 1:20:14 PM3/15/11
to Django Brasil
Jonatas e Natasha, o intervalo é curto (uma, duas, no máximo 3 horas).
Usar o DateTimeField não dará mais trabalho? Sei que é o campo
correto,mas...

Mário Neto

unread,
Mar 15, 2011, 1:28:41 PM3/15/11
to django...@googlegroups.com
Você pode utilizar o TimeField também, e pode também fazer uma função que faça aquele calculo de horas minutos e segundos (do ensino fundamental hehe) que irá pegar os valores dos campos TimeField e fazer aquelas regras, quando o seg. > 59 a casa dos min. += 1 etc.
Más acho bem mais prático trabalhar com DateTimeField e o timedelta mesmo.
Att. Mário A. Chaves Neto
Designer / U.I. Engineer
MBA - Design Digital

Mário Neto

unread,
Mar 15, 2011, 1:31:15 PM3/15/11
to django...@googlegroups.com
segue um exemplo rápido de calculo com o datetime

>>> import datetime
>>> t = datetime.time(13, 5)
>>> now = datetime.datetime.now()
>>> print now + datetime.timedelta(hours=t.hour, minutes=t.minute, seconds=t.second)
2011-03-16 03:23:22.062000

[]s
Reply all
Reply to author
Forward
0 new messages