2012-04-06 4 views
17

यह देखने का सबसे अच्छा तरीका क्या होगा कि वर्तमान समय 10:30 AM और 4:30 PM के बीच है।मैं कैसे निर्धारित करूं कि वर्तमान समय पाइथन के डेटाटाइम मॉड्यूल का उपयोग करके निर्दिष्ट सीमा के भीतर है या नहीं?

मैं निम्नलिखित के बारे में सोच सकता है, यकीन नहीं कैसे सही:

from datetime import datetime 
nw = datetime.now() 
hrs = nw.hour;mins = nw.minute;secs = nw.second; 
zero = timedelta(seconds = secs+mins*60+hrs*3600) 
st = nw - zero # this take me to 0 hours. 
time1 = st + timedelta(seconds=10*3600+30*60) # this gives 10:30 AM 
time2 = st + timedelta(seconds=16*3600+30*60) # this gives 4:30 PM 
if nw>= time1 or nw <= time2: 
    print "yes, within the interval" 

कृपया मुझे इस करता है, तो सही दृष्टिकोण पता है, कुछ बेहतर लिखा जा सकता है?

+0

'timedelta()' आप दिन, घंटे और मिनट भी निर्दिष्ट कर सकते हैं , इसलिए आपको इसकी गणना करने की आवश्यकता नहीं है और कोड अधिक पठनीय है। – C2H5OH

+0

thnaks, मैं इसे याद किया था। – user993563

उत्तर

41
from datetime import datetime, time 
now = datetime.now() 
now_time = now.time() 
if now_time >= time(10,30) and now_time <= time(16,30): 
    print "yes, within the interval" 

एक वैकल्पिक चेक के रूप में रिक ने सुझाव दिया:

if time(10,30) <= now.time() <= time(16,30):   
    print "yes, within the interval" 

साइड नोट, ओपी उसकी/उसके उदाहरण में एक or इस्तेमाल किया जो जांच करते हुए कि वर्तमान समय झूठ का वांछित प्रभाव को प्राप्त नहीं करता सीमा में।

+8

के साथ भी काम करना चाहिए: 'अगर समय (10,30) <= now.time() <= समय (16,30): '। –

+0

एक विस्तार: मैं इस तुलना के लिए इन तुलनाओं को कैसे बना सकता हूं। आज 12 वीं मार्च है। तो मैं कैसे जांच करूं कि दी गई तारीख 12 वीं मार्च है या नहीं? – user993563

+0

@ user993563: ['डेटाटाइम 'डॉक्टर] (http://docs.python.org/py3k/library/datetime.html#available-types) देखें, और विशेष रूप से [' datetime.date'] (http: //docs.python.org/py3k/library/datetime.html#date-objects)। –

10

स्वीकार कर लिया समाधान रातोंरात समय के साथ काम नहीं करता है:

def isNowInTimePeriod(startTime, endTime, nowTime): 
    if startTime < endTime: 
     return nowTime >= startTime and nowTime <= endTime 
    else: #Over midnight 
     return nowTime >= startTime or nowTime <= endTime 
+2

ग्रेट सॉल्यूशन। ध्यान दें कि स्टार्टटाइम, एंडटाइम और अब टाइम टाइम ऑब्जेक्ट्स हैं, आप डेटाटाइम ऑब्जेक्ट के समय भाग को 'डेटाटाइम.टाइम() ' – Braza

+1

के साथ एक्सेस कर सकते हैं। यह सब कैसे गायब है! –

0

यहाँ @ रूबल के जवाब के लिए बहुत कम उदाहरण है:

from datetime import datetime 

def isNowInTimePeriod(startTime, endTime, nowTime): 
    if startTime < endTime: 
     return nowTime >= startTime and nowTime <= endTime 
    else: #Over midnight 
     return nowTime >= startTime or nowTime <= endTime 


timeStart = '3:00PM' 
timeEnd = '11:00AM' 
timeNow = '2:59AM' 
timeEnd = datetime.strptime(timeEnd, "%I:%M%p") 
timeStart = datetime.strptime(timeStart, "%I:%M%p") 
timeNow = datetime.strptime(timeNow, "%I:%M%p") 

print(isNowInTimePeriod(timeStart, timeEnd, timeNow)) 
संबंधित मुद्दे

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