8

I am aware that with the timedelta function you can convert seconds to h:m:s using something like:

>> import datetime
>> str(datetime.timedelta(seconds=666)) 
'0:11:06'

But I need to convert h:m:s to seconds, or minutes.

Do you know a function that can do this?

4

7 に答える 7

13
>>> import time, datetime
>>> a = time.strptime("00:11:06", "%H:%M:%S")
>>> datetime.timedelta(hours=a.tm_hour, minutes=a.tm_min, seconds=a.tm_sec).seconds
666

そして、「:」を分割することに本当に熱心な場合は、生意気なワンライナーを次に示します。

>>> s = "00:11:06"
>>> sum(int(i) * 60**index for index, i in enumerate(s.split(":")[::-1]))
666
于 2012-05-24T17:28:43.280 に答える
13
def hms_to_seconds(t):
    h, m, s = [int(i) for i in t.split(':')]
    return 3600*h + 60*m + s
于 2012-05-24T17:34:03.867 に答える
2

datetime残念ながら、を使用して文字列からオブジェクトを構築するほど簡単ではありませんdatetime.strptime。この質問は、スタック オーバーフローで以前に尋ねられました: How to construct a timedelta object from a simple string、ソリューションにはpython-dateutil の使用が含まれます。

または、別のモジュールを追加する必要がない場合はtimedelta、文字列から a を解析するために使用できるクラスがあります: http://kbyanc.blogspot.ca/2007/08/python-reconstructing-timedeltas-from .html

于 2012-05-24T17:28:36.630 に答える
1
>>> def tt(a):
...     b = a.split(':')
...     return int(b[0]) * 3600 + int(b[1]) * 60 + int(b[2])
... 
>>> print tt('0:11:06')

666

于 2012-05-24T17:38:20.443 に答える
0

これは 2.6.4 で機能します。

hours, minutes, seconds = [int(_) for _ in thestring.split(':')]

それを timedelta に戻したい場合:

thetimedelta = datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
于 2012-05-24T17:28:55.970 に答える
0

このためにtimedeltaを気にするかどうかさえわかりません

>>> pseconds = lambda hms:sum(map(lambda a,b: int(a)*b,hms.split(':'),(3600,60,1)))
>>> pseconds('0:11:06')
666
于 2012-05-24T17:35:32.077 に答える