python,datetime.date:两天之间的差异

2024-09-30 10:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩两个对象{@linkhttp://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

Tags: 对象orggtdocsdatetimedatehtmllibrary
1条回答
网友
1楼 · 发布于 2024-09-30 10:29:48

我不认为这是特别低效的,但是如果没有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)

(另外,请注意在date上打印或使用str如何为您免费生成'%Y-%m-%d'格式)

但是,如果您一次创建一个长长的天数列表,而不只是打印,那么这样做可能效率低下,例如:

[dateFrom + datetime.timedelta(delta_day) for delta_day in range(0, delta.days+1)]

通过创建生成器而不是列表,可以很容易地纠正这种情况。在上面的例子中,用(...)替换[...],或者:

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)

哪个更适合你的语法口味。

相关问题 更多 >

    热门问题