假設我有這些DATATIME變量:的Python,日期時間的「時間差」百分比
start_time, end_time, current_time
我想通過檢查current_time
和start_time
之間的時間差和end_time
IE:假設開始時間和結束時間之間的間隔爲current_time
和end_time
之間的24小時,還有6小時完成,應該留下%25。
這怎麼辦?
假設我有這些DATATIME變量:的Python,日期時間的「時間差」百分比
start_time, end_time, current_time
我想通過檢查current_time
和start_time
之間的時間差和end_time
IE:假設開始時間和結束時間之間的間隔爲current_time
和end_time
之間的24小時,還有6小時完成,應該留下%25。
這怎麼辦?
在Python 2.7.x,時間增量有一個方法total_seconds來實現這一點:
import datetime
startTime = datetime.datetime.now() - datetime.timedelta(hours=2)
endTime = datetime.datetime.now() + datetime.timedelta(hours=4)
rest = endTime - datetime.datetime.now()
total = endTime - startTime
print "left: {:.2%}".format(rest.total_seconds()/total.total_seconds())
在Python 3.2,則可以明顯地劃分直接在時間增量(沒有經過total_seconds)。 (這也在Python 2.6.5: Divide timedelta with timedelta中註明)
這是一個駭人的解決方法:通過使用days
,seconds
和microseconds
字段來計算兩個值之間的總微秒數。然後除以區間內的總微秒數。
可能最簡單的:
import time
def t(dt):
return time.mktime(dt.timetuple())
def percent(start_time, end_time, current_time):
total = t(end_time) - t(start_time)
current = t(current_time) - t(start_time)
return (100.0 * current)/total