V
Hallo!
Ich habe hier eine Funktion zur Berechnung der Zeitspanne von 2 Daten geschrieben, diese funktioniert auch und liefert die Anzahl Tage zurück die zwichen den beiden Daten liegen. Jetzt wollte ich mal fragen ob irgendwer Verbesserungsvorschläge zu machen hätte oder gibt es vielleicht sogar einen Algorithmus um soetwas zu berechnen? Die Schaltjahrmethode ist nicht dabei:
int tagesdiff(int tag1, int monat1, int tag2, int monat2)
{
int tage = 0;
int jahr[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i = monat1; i<monat2; i++)
tage += jahr[i];
return tage += tag2-tag1; // Es wird immer + bzw. - gerechnet
}
int zeitspanne(int tag1, int monat1, int jahr1, int tag2, int monat2, int jahr2)
{
int tage = 0;
if (jahr1 == jahr2)
// monat1 muss kleiner als 3 sein und monat2 größer als 2 sein dann evtl. +1
// fuer schaltjahr
return tage = tagesdiff(tag1, monat1, tag2, monat2) + (monat1<3 && monat2>2
&& schaltjahr(jahr1));
else if (jahr1 < jahr2)
{
// monat1 kleiner/gleich monat2 365 zu den normal berechneten Tagen
if (monat1 <= monat2) tage = 365 + tagesdiff(tag1, monat1, tag2, monat2);
// monat1 groeser monat2, verdrehte Berechnung und von 365 abziehen
else tage = 365 - tagesdiff(tag2, monat2, tag1, monat1);
// nur zw. den Jahren, da für jahr1 und jahr2 Sonderbedingungen bei der
// Schaltjahresberechnung gelten
for(int i=(jahr1+1); i<jahr2; i++)
tage += 365 + schaltjahr(i);
// fuer jahr1 gilt: monat1 muss kleiner 3 sein
// fuer jahr2 gilt: monat2 muss groesser monat 2 sein
return tage += (monat1<3 && schaltjahr(jahr1)) + (monat2>2 && schaltjahr(jahr2));
}
}
Code-Hacker