我有两个条目:
date1 = 2004.09.25
date2 = 2004.10.08
我想用Python写了一个脚本,该脚本识别日期范围并打印出来。这样的事情:
for i in range(date1:date2):
print i
我是否需要定义特定日期格式的日期? 预期的输出是这样的:
2004.09.25
2004.09.26
.
.
.
2004.10.08
我有两个条目:
date1 = 2004.09.25
date2 = 2004.10.08
我想用Python写了一个脚本,该脚本识别日期范围并打印出来。这样的事情:
for i in range(date1:date2):
print i
我是否需要定义特定日期格式的日期? 预期的输出是这样的:
2004.09.25
2004.09.26
.
.
.
2004.10.08
你的第一步应该是看蟒蛇日期时间库。
总体而言,你的第一个解决方案可以是这个样子:
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
(有一点要注意:这显然揍你date1
变量)
我以后会重构为一个日期范围功能,这使你可以做更接近你做的事情;它看起来像
for d in daterange(date1, date2):
print d.strftime('%Y.%m.%d')
后来,当你开发你的Python的技能,它可以像这样的:
for i in range((date2 - date1).days + 1):
print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')
还是这个,这是我的最终版本:
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
模块。
首先,通过各.
分割你的时间(假设它是一个字符串),并通过列表来datetime.date
date1 = datetime.date(*date1.split('.'))
date2 = datetime.date(*date2.split('.'))
然后得到每个日期的ordinal
(天数自1月1日0001)
date1 = date1.toordinal()
date2 = date2.toordinal()
然后,使用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')
序功能,它会去是这样的:
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)
你期望的输出是什么? – Volatility
请参阅更新的问题请 –
这应该有所帮助:http:// stackoverflow。com/questions/993358 /在python中创建一个日期范围 –