2016-03-09 61 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

相關問題