5

重複の可能性:
単純な文字列から timedelta オブジェクトを作成する方法

形式の文字列がありますhours:minutes:secondsが、それは時刻ではなく期間です。たとえば、100:00:00を意味し100 hoursます。

文字列で指定された時間だけ現在の時刻からオフセットされた時刻を見つけようとしています。正規表現を使用して時間文字列を手動で引き離し、それを秒に変換して、によって返される浮動小数点に追加できますが、これを行う関数time.time()はありますか?time

関数のtime.strptime()書式設定は、任意の文字列ではなく、時刻/日付の文字列で機能するようです。

4

2 に答える 2

7
import datetime
dur_str = "100:00:00"
h, m, s = map(int, dur_str.split(':'))
dur = datetime.timedelta(hours=h, minutes=m, seconds=s)
于 2012-10-02T01:36:54.800 に答える
1

使用していませんreが、Pythonを作成するよりも、正規表現を理解する方が作業が多い場合があります。

>>> import datetime
>>> time_str = "100:00:00"
>>> hours, minutes, seconds = [int(i) for i in time_str.split(":")]
>>> time_in_seconds = hours * 60 * 60 + minutes * 60 + seconds
>>> time_in_seconds
360000
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2012, 10, 2, 10, 24, 6, 639000)
>>> new_time = now + datetime.timedelta(seconds=time_in_seconds)
>>> new_time
datetime.datetime(2012, 10, 6, 14, 24, 6, 639000)

nneonneoが指摘したように、、、およびを引数としてdatetime.timedelta()受け入れます。したがって、このようなばかげたことを行うこともできます(お勧めしません):hoursminutesseconds

>>> datetime.timedelta(**{k:v for k,v in zip(["hours", "minutes", "seconds"], [int(i) for i in "100:00:00".split(":")])})
datetime.timedelta(4, 14400)
于 2012-10-02T01:26:54.280 に答える