2009-12-27 15 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 

पायथन में यह कैसे किया जा सकता है। मैं एक नौसिखिया हूं इसलिए मुझे वास्तव में कोई संकेत नहीं है कि कहां से शुरू किया जाए।समय-1 के बीच समय-समय के बीच समय की गणना करें?

जोड़ने के लिए संपादित: मुझे टाइमर नहीं चाहिए। मैन्युअल रूप से उपयोगकर्ता द्वारा समय-समय और समय-2 दोनों दर्ज किए जाते हैं।

आपकी मदद के लिए अग्रिम धन्यवाद।

उत्तर

15

datetime और कक्षा में निर्मित 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

डेल्टा = (टी 2 - टी 1)/12 टाइप एरर: असमर्थित ऑपरेंड प्रकार /: 'datetime.timedelta' और 'int' – 3zzy

+0

यह पाइथन 2.6 में ठीक है लेकिन आप हमेशा timedelta ऑब्जेक्ट को एक पूर्णांक में परिवर्तित कर सकते हैं और गणित करें, इस तरह: delta.seconds/12 – iamamac

5

समय कोड निष्पादन के लिए एक टाइमर है। शायद आप इसे जो चाहते हैं उसके लिए उपयोग कर सकते हैं। समय() 1 9 70-01-01 00:00:00 के बाद से सेकंड और माइक्रोसॉन्ड में वर्तमान समय देता है।

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

नहीं, मैं समय-1 और समय के बीच समय की गणना करना चाहते हैं -2, दोनों मैन्युअल रूप से दर्ज किया गया। – 3zzy

+0

बिल्कुल मेरे मन में क्या था! .... इस बात पे चियर्स ! – Arkapravo

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 क्योंकि यह डेटाटाइम और टाइमडेल्टा का उपयोग करने की तुलना में अजगर सीखने के लिए एक बेहतर तरीका है। मैं 'एस', 'sh' और 'sm' से अधिक अभिव्यक्तिपूर्ण चर नाम पसंद करूंगा। एलेक्स, परिवर्तनीय 'प्रोम' का उपयोग क्यों करें? बिना तर्क के फ़ंक्शन को क्यों कॉल करें? –

+1

@ राजा, हे, मैं दो मौकों पर अलग-अलग संकेत देने का मतलब था लेकिन फिर मैं संकेत - निश्चित में 'प्रोम' का उपयोग करना भूल गया था। परिवर्तनीय नामों के लिए, अत्यंत छोटे-स्कोप्ड चर के लिए, छोटे नाम उचित हैं - जिन्हें ऐसे 2-लाइन-स्कोप वेरिएबल्स 'stringAsInputByTheUser', 'hours_in_string_form', और जैसे नाम देने के लिए सिखाया गया है, और इस महत्वपूर्ण के संपर्क में कभी नहीं स्कोपिंग के बारे में भेद, इस मुद्दे से अवगत होना शुरू कर देना चाहिए। –

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