Python 为两个日期创建循环
可能重复:Python 为两个日期创建循环,python,date,for-loop,python-2.7,Python,Date,For Loop,Python 2.7,可能重复: 我有两个条目: date1 = 2004.09.25 date2 = 2004.10.08 我想用Python编写一个脚本,识别日期范围并打印它们。大概是这样的: for i in range(date1:date2): print i date1 = datetime.date(2004, 9, 25) date2 = datetime.date(2004, 10, 8) day = datetime.timedelta(days=1) while date1 &l
我有两个条目:
date1 = 2004.09.25
date2 = 2004.10.08
我想用Python编写一个脚本,识别日期范围并打印它们。大概是这样的:
for i in range(date1:date2):
print i
date1 = datetime.date(2004, 9, 25)
date2 = datetime.date(2004, 10, 8)
day = datetime.timedelta(days=1)
while date1 <= date2:
print date1.strftime('%Y.%m.%d')
date1 = date1 + day
for i in range((date2 - date1).days + 1):
print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')
import datetime
DATE1 = datetime.date(2004,9,25)
DATE2 = datetime.date(2004,10,8)
D1 = datetime.date.toordinal(DATE1)
D2 = (datetime.date.toordinal(DATE2))+1
for i in range(D1,D2):
print datetime.date.fromordinal(i)
我是否需要为日期定义特定格式的日期?
预期输出如下所示:
2004.09.25
2004.09.26
.
.
.
2004.10.08
您的第一步应该是查看python datetime库 总体而言,您的第一个解决方案可能如下所示:
for i in range(date1:date2):
print i
date1 = datetime.date(2004, 9, 25)
date2 = datetime.date(2004, 10, 8)
day = datetime.timedelta(days=1)
while date1 <= date2:
print date1.strftime('%Y.%m.%d')
date1 = date1 + day
for i in range((date2 - date1).days + 1):
print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')
import datetime
DATE1 = datetime.date(2004,9,25)
DATE2 = datetime.date(2004,10,8)
D1 = datetime.date.toordinal(DATE1)
D2 = (datetime.date.toordinal(DATE2))+1
for i in range(D1,D2):
print datetime.date.fromordinal(i)
稍后,当您开发python技能时,可能会这样:
for i in range(date1:date2):
print i
date1 = datetime.date(2004, 9, 25)
date2 = datetime.date(2004, 10, 8)
day = datetime.timedelta(days=1)
while date1 <= date2:
print date1.strftime('%Y.%m.%d')
date1 = date1 + day
for i in range((date2 - date1).days + 1):
print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')
import datetime
DATE1 = datetime.date(2004,9,25)
DATE2 = datetime.date(2004,10,8)
D1 = datetime.date.toordinal(DATE1)
D2 = (datetime.date.toordinal(DATE2))+1
for i in range(D1,D2):
print datetime.date.fromordinal(i)
或者这是我的最终版本:
def daterange(d1, d2):
return (d1 + datetime.timedelta(days=i) for i in range((d2 - d1).days + 1))
for d in daterange(date1, date2):
print d.strftime('%Y.%m.%d')
使用内置模块
首先,将日期(假设它是一个字符串)按每个
拆分,并将列表传递给datetime.date
date1 = datetime.date(*date1.split('.'))
date2 = datetime.date(*date2.split('.'))
然后获取每个日期的顺序(自0001年1月1日起的天数)
然后,使用for
循环和fromordinal
函数将序号转换为日期
for i in range(date1, date2 + 1):
print date.fromordinal(i).strftime('%Y.%m.%d')
总而言之:
date1 = datetime.date(*date1.split('.')).toordinal()
date2 = datetime.date(*date2.split('.')).toordinal()
for i in range(date1, date2 + 1):
print date.fromordinal(i).strftime('%Y.%m.%d')
使用序数函数可以得到如下结果:
for i in range(date1:date2):
print i
date1 = datetime.date(2004, 9, 25)
date2 = datetime.date(2004, 10, 8)
day = datetime.timedelta(days=1)
while date1 <= date2:
print date1.strftime('%Y.%m.%d')
date1 = date1 + day
for i in range((date2 - date1).days + 1):
print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')
import datetime
DATE1 = datetime.date(2004,9,25)
DATE2 = datetime.date(2004,10,8)
D1 = datetime.date.toordinal(DATE1)
D2 = (datetime.date.toordinal(DATE2))+1
for i in range(D1,D2):
print datetime.date.fromordinal(i)
您希望输出结果是什么?请参阅更新的问题。这应该会有所帮助:这是一个完全相同的问题(morphyn的链接问题与此非常接近)。非常感谢。真有见地