python ,datetime.date : difference between two days

标签 python

我正在玩 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)

(另外,请注意如何在 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)

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

关于 python ,datetime.date : difference between two days,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3561183/

相关文章:

python - 让 python 变得更紧凑,是否会提高它的效率?

python - 简化一行 if 语句

python - 在循环中的不同行上打印值时,如何避免在最后一次迭代后打印换行符?

python - 带 shell 完成的 pip install

python - 导入 psycopg2 库未加载 : libssl. 1.0.0.dylib

python - 我想实现从Windows到Linux的Popen代码:

python - ImportError:没有名为weather_Core_Engine.weather_DB_Handler的模块

python - 如何提取标签内的 unicode 文本?

python - 如何在tensorflow 2中获得损失梯度wrt内层输出?

python - 如何在fcm-django的FCMDevice上注册一个设备?