Datumsangaben zwischen zwei Daten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

gibs eine möglichkeit, sich mit zwei verschiedenen datumsangaben
z. B. datum1 = '29.03.2016' und datum2 = '02.04.2016' alle
datumangabe, die zwischen diesen beiden liegen, ausgeben zu lassen?
(ziel: '[29.03.2016', '30.03.2016','31.03.2016','01.04.2016','02.04.2016'])
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Das geht mit dem datetime-Modul und zwar wandelst Du die Strings in datetime.date-Objekte um und dann gehst Du vom ersten Datum mittels + datetime.timedelta(1) solange einen Tag hoch, bis Du beim 2. Datum angelangt bist. (Muss ich regelmäßig machen...)

Code: Alles auswählen

>>> import datetime
>>> datum = datetime.date(2016, 3, 7)
>>> datum2 = datetime.date(2016, 3, 14)
>>> while datum <= datum2:
	
	print(datum)
	datum += datetime.timedelta(1)

	
2016-03-07
2016-03-08
2016-03-09
2016-03-10
2016-03-11
2016-03-12
2016-03-13
2016-03-14
Und ergänzend - was wahrscheinlich eleganter geht, nur auf die Schnelle zur Illustration:

Code: Alles auswählen

>>> datumsstring = "02.04.2016"
>>> tag, monat, jahr = datumsstring.split(".")
>>> datetime.date(int(jahr), int(monat), int(tag))
datetime.date(2016, 4, 2)
Und - ach ja - was ich sehr, sehr schön finde:

Code: Alles auswählen

>>> str(datetime.date(2016, 4, 2))
'2016-04-02'
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@pixewakbWarum nicht einfach so?

Code: Alles auswählen

In [1]: import datetime

In [2]: datumsstring = "02.04.2016"

In [3]: datetime.datetime.strptime(datumsstring, "%d.%m.%Y").date()
Out[3]: datetime.date(2016, 4, 2)
Und:

Code: Alles auswählen

In [4]: d = datetime.datetime.strptime(datumsstring, "%d.%m.%Y").date()

In [5]: d.strftime("%d.%m.%Y")
Out[5]: '02.04.2016'
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
pixewakb
User
Beiträge: 1411
Registriert: Sonntag 24. April 2011, 19:43

Danke für den Tipp, ich habe mir das mal notiert. War mir nicht geläufig. Ich programmiere häufig so, wie ich denke und das ist häufig nicht sehr elegant. :oops:
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

JAAAA :) :)
... und ich schraub mir seit 5 Stunden selbst was zusammen, dabei is das n 2 zeiler :( :):)
Antworten