2013-04-22 2 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.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) 
>>> 

반환 된 날짜의 시간 부분은 다음 .time() 방법을 사용하여 액세스 할 수 있습니다.

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

datetime.time() 결과는 시간 비교에 사용될 수 있습니다.

+0

감사! 감사합니다! – Dan

관련 문제