问题
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 date
s 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