如何使用for循环并每次添加一天(timedelta)

时间:2016-03-09 07:58:32

标签: python for-loop while-loop

这是我的代码:

import datetime

date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
while not date == today:
    date_counter+=1
    date += oneday

在此代码中,我使用while循环来实现我的目标 - 计算今天和用户选择的特定日期之间的天数。

但是,我想使用for循环来做同样的事情。可以改写吗?

5 个答案:

答案 0 :(得分:5)

减去date s会产生timedelta

import datetime
date = datetime.date(2015,10,1)
today = datetime.date.today()
date_counter = (today - date).days

但是,如果确实想要使用for循环,则可以执行此操作:

import datetime

date = datetime.date(2015,10,1)
today = datetime.date.today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
def genDates(someDate):
    while someDate != today:
        someDate += oneday
        yield someDate
for d in genDates(date):
   date_counter += 1

答案 1 :(得分:4)

不建议使用您正在使用的方法。更好的方法是首先不使用循环。您可以尝试以下代码:

import datetime

date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)

date_counter = (today - date).days

回答有关使用for循环的可能性的问题。我会说一个很大的不。希望这有帮助。

答案 2 :(得分:2)

以下代码仅在您希望在此范围内每天都能执行某些操作时才有意义。

import datetime

date = datetime.date(2016,2,1)
today = datetime.date.today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
for days in range(0, (today - date).days):
     date_counter += 1
     date += oneday

如果您只需要使用此天数

date_counter = (today - date).days

答案 3 :(得分:1)

也可以使用

import datetime

date = datetime.date(2015,10,1)
today = datetime.date.today()
oneday = datetime.timedelta(days = 1)

date_counter = 0
l = [1]
for i in l:
    if not date == today:
        date_counter+=1
        date += oneday
        l.append(1)

print date_counter

答案 4 :(得分:0)

from datetime import date

d0 = date(2015,10,1)
d1 = datetime..today()
delta =  d1 - d0
print delta.days

您可以使用标准功能轻松计算日期差异。

(today - date).days