2015-09-27 138 views
1

我在解析python日期時遇到了問題。下面的代碼提供「類型錯誤:‘海峽’對象不是可調用」當我這樣稱呼它Python日期解析

python2 dateFilter.py 2015-01-01 2015-02-01 

來源:

from os import sys 
from datetime import date, datetime, timedelta 

def dateParser(date): 
    year = str(date[0:4]) 
    month = str(date[5:7]) 
    day = str(date[8:10]) 

    print(year) 
    print(month) 
    print(day) 

    d = date(year, month, day) 
    print(d) 

    return 

if __name__=="__main__": 
    startDate = dateParser(sys.argv[1]) 
    endDate = dateParser(sys.argv[2]) 

的事情是我希望得到的日期將成爲輸入,並把它成日期對象

+1

你遮蔽'從日期時間進口date'與'date',參數爲'dateParser '... – jonrsharpe

+0

http://stackoverflow.com/help/someone-answers(請注意,它不會說*「在問題標題中編輯[已解決]」*) – jonrsharpe

回答

2

您的參數名稱date被遮蔽的進口:from datetime import date,你的參數名稱更改爲類似dt,你是好去:

def dateParser(dt): 
    year = str(dt[0:4]) 
    ... 
2

您應該使用datetime.strptime而不是切分字符串。那麼你的DateTime對象的構造只需一個步驟:

>>> import datetime as dt 
>>> d=dt.datetime.strptime('2015-02-01', '%Y-%m-%d').date() 
>>> d.year, d.month, d.day 
(2015, 2, 1) 

那麼你的代碼將變成:

from os import sys 
import datetime as dt 

def dateParser(date_str): 
    return dt.datetime.strptime(date_str, '%Y-%m-%d').date()  

if __name__=="__main__": 
    startDate = dateParser('2015-01-01') 
    endDate = dateParser('2015-02-01')