Letzter Tag eines Monates ermitteln

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
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

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
jAN
User
Beiträge: 170
Registriert: Samstag 4. Juni 2005, 18:51
Wohnort: Großmehlra (in Thüringen)
Kontaktdaten:

Code: Alles auswählen

import calendar
anzahltage=calendar.monthrange(jahr,monat)[1]
#adios.py
import os,sys
while 1: os.startfile(sys.argv[0])
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
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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. :-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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 8)
Antworten