Seite 1 von 1
Letzter Tag eines Monates ermitteln
Verfasst: Sonntag 20. August 2006, 14:58
von DatenMetzgerX
Hallo
Ich wollte alle Einträge die Seit dem z.B. 01.02.2006 bis 28.02.2006 auslesen.
Nun suche ich eine Funktion, die mir den letzten Tag eines bestimmten Monats zurück gibt.
z.B ich sage Monat 3 (wenn nötig auch das Jahr mitgeben) und er gibt mir den Grösten Tag zurück.
Gibts da schon was vorgebackenes?
Gruess
DM
Verfasst: Sonntag 20. August 2006, 15:21
von jAN
Code: Alles auswählen
import calendar
anzahltage=calendar.monthrange(jahr,monat)[1]
Verfasst: Sonntag 20. August 2006, 15:30
von BlackJack
Das kann man sich recht einfach selbst basteln, aber kannst Du nicht `datetime.date` Objekte benutzen und das Enddatum einfach "exclusive" angeben? Also als Enddatum 2006-03-01 und dann testen ob das bearbeitete Datum kleiner ist.
Code: Alles auswählen
import datetime
def daterange(start, end):
one_day = datetime.timedelta(days=1)
while start < end:
yield start
start += one_day
for date in daterange(datetime.date(2006, 2, 1), datetime.date(2006, 3, 1)):
print date
Verfasst: Sonntag 20. August 2006, 17:20
von rayo
Hi
Also ich hätte spontan einfach einen Monat dazugezählt und dann einen Tag weg.
Code: Alles auswählen
import datetime
def end_of_month(month, year):
if month == 12:
month = 1
year += 1
else:
month += 1
return datetime.date(year, month,1)-datetime.timedelta(days=1)
print end_of_month(1,2006) #2006-01-31
print end_of_month(3,2006) #2006-03-31
print end_of_month(12,2006) #2006-12-31
*edit* kannst du nicht direkt einfach den Monat und das Jahr vergleichen? Im Stil von "Gib mir alle Daten mit dem Monat 2 und dem Jahr 2006".
Gruss
Verfasst: Sonntag 20. August 2006, 17:24
von gerold
Hi!
Und hier noch einer von mir:
Code: Alles auswählen
import datetime
datetime.datetime(2006, 8, 1) - datetime.timedelta(1)
lg
Gerold
Edit: Ich sehe soeben, dass rayo den gleichen Gedanken hatte. 
Verfasst: Montag 21. August 2006, 12:26
von Joghurt
Ich hätte jetzt einfach:
Code: Alles auswählen
def Tage(monat, jahr):
if monat==2:
if jahr%4 == 0 and (jahr%100 != 0 or jahr%400 == 0):
return 29
else:
return 28
else:
return 31-(monat-1)%7%2
geschrieben
