我正在玩2个对象{@link http://docs.python.org/library/datetime.html#datetime.date }
我想计算它们之间的所有日期,假设日期1> =日期2,并打印出来.这是我想要实现的一个例子.但我认为这根本不是有效的.有一个更好的方法吗?
# i think +2 because this calc gives only days between the two days,
# i would like to include them
daysDiff = (dateTo - dateFrom).days + 2
while (daysDiff > 0):
rptDate = dateFrom.today() - timedelta(days=daysDiff)
print rptDate.strftime('%Y-%m-%d')
daysDiff -= 1
我没有看到这种效率特别低效,但是如果没有while循环,你可以使它更清晰:
delta = dateTo - dateFrom
for delta_day in range(0, delta.days+1): # Or use xrange in Python 2.x
print dateFrom + datetime.timedelta(delta_day)
Run Code Online (Sandbox Code Playgroud)
(另外,请注意打印或使用如何str在date产生'%Y-%m-%d'格式为您免费)
但是,如果您一次性创建一长串日期而不是仅仅打印,那么这样做可能效率很低,例如:
[dateFrom + datetime.timedelta(delta_day) for delta_day in range(0, delta.days+1)]
Run Code Online (Sandbox Code Playgroud)
这可以通过创建生成器而不是列表来轻松纠正.要么更换[...]与(...)在上述例子中,或者:
def gen_days_inclusive(start_date, end_date):
delta_days = (end_date - start_date).days
for day in xrange(delta_days + 1):
yield start_date + datetime.timedelta(day)
Run Code Online (Sandbox Code Playgroud)
哪个更适合您的语法口味.
| 归档时间: |
|
| 查看次数: |
9668 次 |
| 最近记录: |