在网络上有很多写法,但终会出错,据查到次错误type object 'datetime.datetime' has no attribute 'timedelta'因为导入包form datatime import datetime 后语句中写了两个datetime:
import
datetime
def
dateRange(beginDate, endDate):
dates
=
[]
dt
=
datetime.datetime.strptime(beginDate,
"%Y-%m-%d"
)
date
=
beginDate[:]
while
date <
=
endDate:
dates.append(date)
dt
=
dt
+
datetime.timedelta(
1
)
date
=
dt.strftime(
"%Y-%m-%d"
)
return
dates
if
__name__
=
=
'__main__'
:
print
dateRange(
"2016-01-01"
,
"2016-02-01"
)
如果写import datetime,则需要如上写法
后来又出现了如下错误type object 'datetime.datetime' has no attribute 'timedelta',然而我的语句中只写了一个datetime,后来我发现,如果不导入datetime包可以自己使用,而且只需要一个datetime,而第二句话dt
=
dt
+
datetime.timedelta(
1)只需要写成
dt = dt + timedelta(1),最终我写了一个以某天为开始生成7天日期的代码:
def dateRange(beginDate): dates = [] i=0 begin =beginDate.strftime("%Y-%m-%d") dt = datetime.strptime(begin, "%Y-%m-%d") date = begin[:] while i < 7: dates.append(date) dt = dt + timedelta(1) date = dt.strftime("%Y-%m-%d") i+=1 return dates
其中strptime(begin,"%Y-%m-%d")是由字符串转化成日期格式,而strftime为割取时间的时分秒,只留下年月日,timedelta是时间差的计算公式