hmm... Frage: ist es sinnvoll eine Datumsdifferenz mit Monaten anzugeben? Eher doch mit Tagen und Jahren. Das ließe sich dann auch relativ leicht selber machen. Zuerst die Differenz der Tage ausrechnen, dann die Zeitdifferenz (hh:mm:ss). Wenn die Negativ ist, ziehst du einfach nen tag ab und rechnest die negative in normale Zeit um (lässt sich ja leicht machen, wenn man vor dem ausrechnen der Differenz in sekunden umrechnet). Das mit dem Differenzen der Tage rechnest du dann einfach grob in Monate und Jahre auf, oder lässt es.
Nen Codeschnippel für die Tagedifferenzen hab ich noch, als wir vor einiger Zeit in der Schule der Gregorianischen Kalendar hatten... ist ein wenig lang, funktioniert aber
Code: Alles auswählen
def schaltjahr (jahr):
if (jahr % 400 == 0) or ((jahr % 4 == 0) and (jahr % 100 != 0)) :
return 1
else:
return 0
def tagemonat(jahr,monat):
if monat == 2:
return schaltjahr(jahr) + 28
elif (monat == 4) or (monat == 6) or (monat == 9) or (monat == 11):
return 30
else:
return 31
def davor (j1,m1,t1,j2,m2,t2):
if j1 < j2:
return 1
elif j1 > j2:
return 0
elif m1 < m2:
return 1
elif m1 > m2:
return 0
elif t1 < t2:
return 1
else:
return 0
def nachfolger(jahr,monat,tag):
j = jahr; m = monat; t = tag
t = t + 1
if (t > tagemonat(jahr,monat)):
t = 1
m = m + 1
if (m > 12):
m = 1
j = j + 1
return j,m,t
def tagedifferenz(j1,m1,t1,j2,m2,t2):
if not davor(j1,m1,t1,j2,m2,t2):
(j1,m1,t1,j2,m2,t2)=(j2,m2,t2,j1,m1,t1)
diff=0L
while davor(j1,m1,t1,j2,m2,t2):
(j1,m1,t1)=nachfolger(j1,m1,t1)
diff=diff+1L
return diff
print tagedifferenz(2003,5,31,2003,6,2)