Seite 1 von 1
Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 08:03
von makuee
Hallo zusammen,
ich hätte mal eine Frage zwecks einer Schleife.
Ich habe folgenden Zeitintervall:
Vom 1970:01:01 bis zum 2010:06:01
Jetzt würde ich gern eine Schleife haben, welche mir ausgibt:
1970:01:01
1970:02:01
1970:03:01
...
2010:05:01
2010:06:01
gibt es dafür eine Möglichkeit?
Gruß
Martin
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:00
von mutetella
Hallo Martin,
sofern ich Dich richtig verstanden habe, suchst Du etwas in der Art:
Code: Alles auswählen
import datetime
def schleife(start, ende):
datelist = []
while start <= ende:
datelist.append(start)
if start.month < 12:
start = start.replace(month=start.month + 1)
else:
start = start.replace(month=1, year=start.year + 1)
return(datelist)
Gruß
mutetella
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:12
von Darii
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:13
von .robert
Oder so:
Code: Alles auswählen
import datetime
def walk_months(startdate, enddate):
akt = startdate
while akt <= enddate:
yield akt.strftime("%Y:%m:%d")
if akt.month < 12:
akt = akt.replace(month=akt.month + 1)
else:
akt = akt.replace(year = akt.year+1, month = 1)
if __name__ == '__main__':
start = datetime.date(1970,1,1)
end = datetime.date.today()
for d in walk_months(start, end):
print d
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:31
von mutetella
@.robert
Ich stehe immer wieder vor der Frage: Liste oder Generator? Kannst Du mir sagen, welche Vorteile gerade auch in diesem Beispiel ein Generator gegenüber einer Liste hat? In meinem Kalenderprogramm müssen ja immer wieder Datumsbereiche durchlaufen werden. Ist da ein Generator performanter oder anderweitig von Vorteil?
Gruß
mutetella
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:39
von .robert
Ein Generator ist Speicherschonender. Mit der Listen-Methode hältst du ja eine Liste mit allen Werten im Speicher, mit dem Generator immer nur den aktuellen Wert.
Über die Performance kann ich nichts fundiertes aussagen

Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 09:56
von makuee
hey,
danke zusammen, hab es aber nach einigem getüftel selber hinbekommen.
trotzdem danke für eure bemühungen.
gruß
martin
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 10:06
von .robert
makuee hat geschrieben:hab es aber nach einigem getüftel selber hinbekommen.
Und willst du deine Lösung nicht zeigen? Vielleicht ist die ja besser als die von mutetella oder mir, und wenn noch mal jemand vor einem ähnlichen Problem steht, findet er hier direkt mehrere Lösungen zum Vergleichen.
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 10:19
von karolus
Hallo
Als LC:
Code: Alles auswählen
datliste = [ "%s:%02d:01" %(j,m) for j in range(1970,2011) for m in range(1,13)][:-6]
Gruß Karo
Re: Zeit - Schleife
Verfasst: Montag 21. Juni 2010, 13:10
von mutetella
@karolus
Cool! Hier noch die Variante für datetime.date()-Objekte:
Code: Alles auswählen
datliste = [datetime.date(j, m, 1) for j in range(1970,2011) for m in range(1,13)][:-6]
Gruß
mutetella