3

次のデータ時間変数があるとします。

start_time, end_time, current_time

残り時間のパーセンテージと、と のcurrent_time間の時間差を確認したいと思いますstart_timeend_time

IE: start_time と end_time の間の間隔が 24 時間で、 と の間にあると仮定するとcurrent_timeend_time終了まであと 6 時間あり、%25 を残す必要があります。

これはどのように行うことができますか?

4

3 に答える 3

3

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でも指摘されています:timedeltaをtimedeltaで除算します。)

于 2012-10-16T20:18:06.490 に答える
3

ハック的な回避策は次のとおりです。 daysseconds、およびmicrosecondsフィールドを使用して、2 つの値の間の合計マイクロ秒数を計算します。次に、間隔の合計マイクロ秒数で割ります。

于 2010-03-22T01:23:08.960 に答える
1

おそらく最も単純です:

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
于 2010-03-22T01:46:33.243 に答える