2013-04-22 4 views
8

問題は、それが時間内に日付と唯一の要因を無視したいということです。ここで私が持っているものです。datetimeから時間を抽出し、時間(日付ではない)が範囲内にあるかどうかを判断しますか?

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' 

私は2つのdiff私はそれらの間で変換する方法や私が1つだけを使ってやりたいことを達成する方法がわかりません。私はちょうどそれが日付を無視し、時間が指定された範囲内にあるかどうかをチェックするだけです。 Python 2.6は、コードの他の部分で使用しているライブラリのために、MUSTです。

答えて

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) 
>>> 

返された日時の時刻部分が、その後.time()メソッドを使用してアクセスすることができます。

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

datetime.time()の結果は、時間の比較に使用できます。

+0

ありがとうございます!それは有り難いです! – Dan

関連する問題