2015-09-27 142 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')