2009-12-27 133 views
9
enter time-1 // eg 01:12 
enter time-2 // eg 18:59 

calculate: time-1 to time-2/12 
// i.e time between 01:12 to 18:59 divided by 12 

它如何在Python中完成。我是初學者,所以我真的不知道從哪裏開始。計算時間1到時間2之間的時間?

編輯添加:我不想要一個計時器。用戶手動輸入時間1和時間2。

在此先感謝您的幫助。

回答

15

datetimetimedelta類從內置的datetime模塊是你所需要的。

from datetime import datetime 

# Parse the time strings 
t1 = datetime.strptime('01:12','%H:%M') 
t2 = datetime.strptime('18:59','%H:%M') 

# Do the math, the result is a timedelta object 
delta = (t2 - t1)/12 
print(delta.seconds) 
+0

delta =(t2 - t1)/ 12 TypeError:不支持的操作數類型爲/:'datetime.timedelta'和'int' – 3zzy 2009-12-27 05:49:11

+0

python 2.6中可以使用 但是,您始終可以將timedelta對象轉換爲整數並進行如下計算:delta.seconds/12 – iamamac 2009-12-27 06:40:25

5

下面是計時代碼執行的計時器。也許你可以用它來達到你想要的。 time()返回自1970-01-01 00:00:00以來的當前時間,以秒和微秒爲單位。

from time import time 
t0 = time() 
# do stuff that takes time 
print time() - t0 
+0

不,我想時間-1和時間之間的時間來計算-2,都是手動輸入的。 – 3zzy 2009-12-27 04:56:45

+0

正是我想到的! ....爲此歡呼! – Arkapravo 2010-07-10 11:42:54

0

假設用戶正在輸入的字符串等"01:12",需要轉換(以及有效)這些字符串到的分鐘數,因爲00:00(例如,"01:12"1*60+12,或72分鐘),然後再減去一個從另一個。然後,您可以將差值以分鐘爲單位轉換回hh:mm形式的字符串。

6

最簡單,最直接的可能是這樣的:

def getime(prom): 
    """Prompt for input, return minutes since midnight""" 
    s = raw_input('Enter time-%s (hh:mm): ' % prom) 
    sh, sm = s.split(':') 
    return int(sm) + 60 * int(sh) 

time1 = getime('1') 
time2 = getime('2') 

diff = time2 - time1 

print "Difference: %d hours and %d minutes" % (diff//60, diff%60) 

例如,一個典型的運行可能是:

$ python ti.py 
Enter time-1 (hh:mm): 01:12 
Enter time-2 (hh:mm): 18:59 
Difference: 17 hours and 47 minutes 
+1

+1,因爲與使用datetime和timedelta相比,這是學習python的人更好的方法。我更喜歡比's','sh'和'sm'更具表現力的變量名稱。 Alex,爲什麼要使用變量'prom'?爲什麼不用參數調用函數? – 2009-12-27 11:30:09

+1

@Raja,呵呵,我的意思是在兩種情況下給出不同的提示,但後來我忘了在提示中使用'prom' - 修正了。至於變量名,對於極小範圍的變量,很小的名字是合適的 - 那些已經被教過來命名這樣的2行變量變量'stringAsInputByTheUser','hours_in_string_form'等的類,並且從未接觸過這個重要的變量關於範圍的區分,應該開始接觸到這個問題。 – 2009-12-27 15:36:09