这是我的代码:
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循环来做同样的事情。可以改写吗?
答案 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