2010-06-23 18 views
6

Quale metodo Python datetime o time dovrei utilizzare per convertire il tempo in HH: MM: SS in tempo decimale in secondi? Gli orari rappresentano durate di tempo (la maggior parte sono meno di un minuto) e non sono collegati a una data.Time to decimal time in Python

risposta

12
t = "1:12:23" 
(h, m, s) = t.split(':') 
result = int(h) * 3600 + int(m) * 60 + int(s) 
7

Se per "tempo di decimali" si intende un numero intero di secondi, allora probabilmente si desidera utilizzare datetime.timedelta:

>>> import datetime 
>>> hhmmss = '02:29:14' 
>>> [hours, minutes, seconds] = [int(x) for x in hhmmss.split(':')] 
>>> x = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds) 
>>> x 
datetime.timedelta(0, 8954) 
>>> x.seconds 
8954 

(Se effettivamente voleva un Decimal, naturalmente, è abbastanza facile per arrivarci ...)

>>> import decimal 
>>> decimal.Decimal(x.seconds) 
Decimal('8954') 
+0

Ma n.b. che se c'è un componente in microsecondi questo lo troncerà. –

0

Utilizzando il modulo datetime:

>>> t = datetime.time(12,31,53) 
>>> ts = t.hour * 3600 + t.minute * 60 + t.second 
>>> print ts 
45113