首页 > 解决方案 > 在 Python 上使用 datetime 逐周获取日期

问题描述

我需要一种方法,给定使用 datetime.now() 的日期,在 for 循环中生成以下日期。我试过这样做:

from datetime import datetime, timedelta, date

cont = 1
for cont in range(1, 50):
    time_now = datetime.now()
    time_ed = time_now.replace(day = cont)
    print(time_ed)

但是一旦我到达本月的最后一天,它就会崩溃并显示以下内容:

ValueError: day is out of range for month

有没有一种方法,当到达一个月的最后一天时,传递到下一天并继续这样做?

标签: pythondatedatetime

解决方案


这应该可以解决问题:

from datetime import datetime, timedelta

time_now = datetime.now()

for cont in range(1, 50):
    time_ed = time_now + timedelta(days=cont)
    print(time_ed)

与您的原始代码相比,有几件事发生了变化:

  1. 反正不需要,cont = 1因为它是在for循环中定义的。
  2. time_now在循环之外定义,for因此不需要在每次迭代时重新计算。
  3. 我不只是替换time_now对象上的日期,而是在每次迭代中创建了一个新timedelta对象,其中包含您想要的天数以添加到time_now.

推荐阅读