2011-08-15 21 views
9

मुझे यकीन है कि यह आप में से बहुत से के लिए एक nobrainer है, लेकिन मैं खुद को पूरी तरह से datetime.timedelta बात से उलझन में पाते हैं। अनिवार्य रूप से जब मैं startTime शुरू करता हूं तो मैं टाइमस्टैम्प करता हूं और फिर मैं endTime प्रक्रिया के अंत में टाइमस्टैम्प करता हूं और मैं एचएच में अंतर प्राप्त करने की कोशिश कर रहा हूं: एमएम: एसएस और मुझे कोई भाग्य नहीं है।पायथन में समय की गणना (डेटाटाइम.timedelta?)

मैं इस त्रुटि मिलती है जब मैं endTime - startTime प्रिंट कार्य करें:

startTime = datetime.now() 
<... my looping process ...> 
endTime = datetime.now() 
calcdTime = endTime - startTime 
print str(calcdTime)[:-4] 

यह करने के लिए outputs:: एच: MM: SS.MM (इस प्रकार पिछले अलग करना

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time' 

संपादित अंतिम परिणाम शामिल करने के लिए timedelta

+1

'datetime.datetime' और' datetime.date' समर्थन घटाव, लेकिन 'datetime.time' नहीं है। –

उत्तर

10

time के बजाय datetime का उपयोग करें। एक बार से एक बार घटाना बिना व्यर्थ है तारीख; आप बस यह नहीं मान सकते कि वे उसी दिन हैं और बाएं ऑपरेंड पहले आता है।

+0

मैन के बजाय 'datetime.datetime' का उपयोग करने का प्रयास करें, मुझे मूर्ख लगता है। :) धन्यवाद, एक आकर्षण की तरह काम किया। – chow

5

क्या आप जानकारी के साथ कर रहे हैं पर निर्भर करता है, तो आप सिर्फ time.time उपयोग कर सकते हैं:

import time 

starttime = time.time() 

# do stuff 

endtime = time.time() 

elapsed = endtime - starttime 
print elapsed 

जो तुम सेकंड में व्यतीत समय दे देंगे। यह timedelta होने से अक्सर अधिक सुविधाजनक होता है।

संबंधित मुद्दे