这是我的代码:
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 loop 来做同样的事情。它可以重写吗?
减去
date
s 得出timedelta
:
import datetime
date = datetime.date(2015,10,1)
today = datetime.date.today()
date_counter = (today - date).days
但是,如果您确实想使用 for 循环,则可以这样做:
导入日期时间
date = datetime.date(2015,10,1)
today = datetime.date.today()
one_day = datetime.timedelta(days=1)
date_counter = 0
def gen_dates(some_date):
while some_date != today:
some_date += one_day
yield some_date
for d in gen_dates(date):
date_counter += 1
print(date_counter, ':', d)
不建议使用您正在使用的方法。更好的方法是首先不使用循环。您可以改为尝试以下代码:
import datetime
date = datetime.date(2015,10,1)
today = datetime..today()
oneday = datetime.timedelta(days = 1)
date_counter = (today - date).days
回答您关于使用 for 循环的可能性的问题。我会说一个很大的不。希望这有帮助。
以下代码仅在您要在此范围内的每一天执行某些操作时才有意义。
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
这也可以使用
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
from datetime import date
d0 = date(2015,10,1)
d1 = datetime..today()
delta = d1 - d0
print delta.days
您可以使用标准函数轻松计算日期差异。
(today - date).days