在网络上有很多写法,但终会出错,据查到次错误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是时间差的计算公式
博客内容介绍了在Python中如何避免错误地使用`datetime`模块来生成从特定日期开始的7天日期序列。错误提示为`type object 'datetime.datetime' has no attribute 'timedelta'`。解决方案包括正确导入`datetime`模块以及使用`strptime`和`strftime`进行日期格式转换,结合`timedelta`计算时间差。
51万+





