2013-04-22 10 views
8

समस्या यह है कि मैं चाहता हूं कि वह उस समय और केवल उस समय कारक को अनदेखा कर दे।डेटाटाइम से समय निकालें और निर्धारित करें कि समय (तिथि नहीं) सीमा के भीतर आता है या नहीं?

import time 
from time import mktime 
from datetime import datetime 

def getTimeCat(Datetime): 
    # extract time categories 
    str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M") 
    ts = datetime.fromtimestamp(mktime(str_time)) 

    # --> Morning = 0400-1000 
    mornStart = datetime.time(4, 0, 1) 
    mornEnd = datetime.time(10, 0, 0) 

    # --> Midday = 1000-1600 
    midStart = datetime.time(10, 0, 1) 
    midEnd = datetime.time(16, 0, 0) 

    # --> Evening = 1600-2200 
    eveStart = datetime.time(16, 0, 1) 
    eveEnd = datetime.time(22, 0, 0) 

    # --> Late Night = 2200-0400 
    lateStart = datetime.time(22, 0, 1) 
    lateEnd = datetime.time(4, 0, 0) 

    if time_in_range(mornStart, mornEnd, ts): 
     timecat = 0 #morning 
    elif time_in_range(midStart, midEnd, ts): 
     timecat = 1 #midday 
    elif time_in_range(eveStart, eveEnd, ts): 
     timecat = 2 #evening 
    elif time_in_range(lateStart, lateEnd, ts): 
     timecat = 3 #late night 

    return timecat 

के रूप में है, मैं इस त्रुटि मिलती है:

TypeError: argument must be 9-item sequence, not datetime.datetime 

जब मैं के लिए प्रासंगिक लाइन बदलने के लिए:

str_time = time.strptime(Datetime, "%m/%j/%y %H:%M") 

मैं इस त्रुटि मिलती है: यहाँ मैं क्या है

TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int' 

मुझे पता है कि मैं दो diff के साथ काम कर रहा हूँ ईरेंट लाइब्रेरीज़ या व्हाट्नॉट, लेकिन मुझे यकीन नहीं है कि उनके बीच कैसे परिवर्तित करें या पूरा करें जो मैं केवल एक का उपयोग करना चाहता हूं। मैं सिर्फ तारीख को अनदेखा करना चाहता हूं और केवल यह जांचता हूं कि समय निर्दिष्ट सीमाओं के भीतर है या नहीं। पाइथन 2.6 एक लाइब्रेरी के कारण होना चाहिए जो मैं कोड में कहीं और उपयोग कर रहा हूं।

उत्तर

14

यह पंक्ति:

str_time = datetime.strptime(Datetime, "%m/%j/%y %H:%M") 

रिटर्न एक datetime वस्तु as per the docs

आप स्वयं इस दुभाषिया में सहभागी निम्न आदेश चलाकर परीक्षण कर सकते हैं:

>>> import datetime 
>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M") 
datetime.datetime(2013, 1, 31, 0, 12) 
>>> 

लौटे datetime के समय भाग तो .time() पद्धति का उपयोग करके पहुँचा जा सकता है।

>>> datetime.datetime.strptime('12/31/13 00:12', "%m/%j/%y %H:%M").time() 
datetime.time(0, 12) 
>>> 

datetime.time() परिणाम तो अपना समय की तुलना में इस्तेमाल किया जा सकता है।

+0

धन्यवाद! मैं इसकी सराहना करता हूं! – Dan

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

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