2017-04-01 158 views
0

我正在編寫處理文本文件的python代碼,並且對於每一行輸入,計算該行中描述的操作所涉及的時間,然後報告「運行時間」。所需輸出像python:計算時間進度

 lapse  time 
start   12:00 
action1 0:37 12:37 
action2 1:01 13:38 
action3 0:30 14:08 

我來到一些可能的方法,但都看起來尷尬。最令我困惑的是使用「time」,「strftime」或「datetime」,或者甚至是別的東西。我相信一個簡單優雅的解決方案必須存在。

NB時區和DST是沒有關係的,如果我能夠顯示足夠的UTC,至少在一開始。在稍後的階段,最後一列(UTC)可能會增加一列「當地時間」,但這是次要的。

編輯,明顯缺乏清晰的,添加例如僞代碼:

TIME='12:00' 
PCS_PER_HOUR=750 
with infile: 
    read line of data 
    process data, including calc of PCS_DONE 
    LAPSE=PCS_DONE/PCS_PER_HOUR 
    TIME += LAPSE 
    print(' ..... ' ,format(data, data, data, LAPSE, TIME)) 

我的問題是,如何讓「時間= '12:00」到的東西,蟒蛇可以輕鬆處理,並且以計算的整數秒或分鐘或其他值進行增加。

+0

請分享您的「一些可能的方法」。 – DyZ

+0

他們沿着保持單位變量的小時數,分鐘數,然後添加「手工方式」如「如果分鐘> 60:小時+ = 1分鐘 - = 60」。基本上根本不使用任何時間特定的函數,而python有很多這樣的函數,事實上這樣做會導致混淆。 –

+0

保留time'time()'返回的秒數。使用'strftime()'以任何方式打印它。 – DyZ

回答

1

使用datetime.timedelta

設置開始時間。

In [1]: import datetime 

初始時間爲12小時。

In [2]: start = datetime.timedelta(hours=12) 

In [3]: start 
Out[3]: datetime.timedelta(0, 43200) 

假設LAPSE爲0.23小時(件件由每小時的產量分成小時)。

In [4]: action1 = datetime.timedelta(hours=0.23) 

現在你可以像你想要的格式化時間。標準表示法爲小時,分鐘和秒:

In [5]: str(start) 
Out[5]: '12:00:00' 

In [6]: str(start+action1) 
Out[6]: '12:13:48' 
+0

謝謝,但不是真的答案。我計算LAPSE = PCS_DONE/PCS_PER_HOUR左右的時間間隔。我怎麼能得到這樣的結果到strftime中,這似乎期望一個元組作爲它的輸入?換句話說,「當前時間」根本不涉及。 –

+0

然後只使用deltas。 –

+0

再次感謝,但你似乎想念我的問題。我編輯了開頭的問題,添加了一些僞代碼。 –