2016-03-09 29 views
3

这里是我的代码:如何使用for循环,并添加一天(timedelta)每次

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

这是为什么?你为什么要使用for循环? –

+0

我很好奇,如果有任何比我的for循环更好用的方法 –

+0

更好的方法是首先不要使用循环来完成此类任务。另外你所说的是不可能使用python循环。 –

回答

4

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

import datetime 

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

date_counter = (today - date).days 

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

5

date小号减法使得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 
+0

你的答案是完美的,所以我给你upvote!谢谢:) –

0
from datetime import date 

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

可以使用标准函数轻松计算日期差异。

(today - date).days 
1

如果你想在这个范围内的每一天做点什么,下面的代码才有意义。

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 
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 
+0

哦,这个工程,但它很痛。 – NighttimeDriver50000

+0

@ NighttimeDriver50000我知道这不是最好的办法,我给了它的替代方法,并显示在for循环中的列表可以修改for循环 – mugetsu

+1

我知道你知道;我只是为你的创造力而鼓掌。 – NighttimeDriver50000

相关问题