How to use for loop and add one day (timedelta) every time

不羁的心 提交于 2019-12-12 15:10:02

问题


Here is my code:

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

In this code I use while loop to achieve my goal--to count the days between today and the specific day chosen by users.

However, I want to use for loop to do the same thing. Can it rewrite by for?


回答1:


The approach that you are using is not advised. The better approach would be to not use a loop in the first place. You can instead try the following code:

import datetime

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

date_counter = (today - date).days

To answer your question about possibility of using for loop. I would say a big no. hope this helps.




回答2:


Subtraction of dates makes a timedelta:

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

If you really want to use a for loop, however, you can do this:

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



回答3:


The following code only makes sense if you want to do something for every day in this range.

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

If you only need the number of days you can use this

date_counter = (today - date).days



回答4:


This may be used also

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



回答5:


from datetime import date

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

you can easily calculate the date diff using standard function.

(today - date).days


来源:https://stackoverflow.com/questions/35885980/how-to-use-for-loop-and-add-one-day-timedelta-every-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!