Datumsdifferenz

LeoLinux

Well-Known Member
Hallo,

ich habe ne kleine Aufgabe an der ich hängen bleibe, weil ich einfach nicht auf eine simple Lösung ohne Verwendung von Bedingungen komme.

Ziel ist es mit einfachsten mathematischen Mitteln, wie Plus, Minus, Mal, Geteilt und Betragsstrichen "|" auf eine Datumsdifferenz zu kommen. Es sollen keine Bedingungen mit in die Rechnung einfließen, sondern es muss in einer Formel bleiben in die man lediglich TagAnfang, MonatAnfang und TagEnde, MonatEnde eitragen muss.

z.B die Differenz zwischen dem 20.02.2010 bis 05.03.2010 = 15 Tage und 0 Monate - also 0,5 Monate - Jahre werden nicht berücksichtigt.

Beispiel für diesen Fall:
Differenz a) 30[gesamt]-20[TagAnfang]=10[Tage]
Differenz b) Tag vom EndDatum = 05[Tage]
Endergebniss: Differenz a) + Differenz b) = (10+5)/30=0,5[Monate]

Mit Berücksichtigung der Monate habe ich allgemein folgende Formel aufgestellt. Schreib sie dir am besten mit Verwndung von Bruchstrich und Klammern auf ein Blatt Papier - damit es überschaubarer wird:

Zeitfenster = (1[Monat] / 30 [Tage]) * (30 [Tage] - | TagAnfang - TagEnde |) + (MonatEnde - MonatAnfang -1 [Monat]))

Wenn du diese Formel jetzt auf das Beispieldatum anwendest kommt exakt 0,5 Monate raus. Perfekt, genauso muss es aussehen, dass ich mit diesem Wert als Faktor für weitere Schritte weiterrechnen kann, ABER:

Beispieldaten:
30.05.2010 bis 01.07.2010
vs.
01.05.2010 bis 30.07.2010

Dafür haut sie nicht mehr hin.
Kommst du auf ne Lösung? ;)


LG


P.S. Eine Kopie dieses Threads liegt auch auf: http://www.chemieonline.de/forum/showthread.php?p=2684726012#post2684726012
 
Last edited:
Hi LeoLinux,

Hallo,
z.B die Differenz zwischen dem 20.02.2010 bis 05.03.2010 = 15 Tage und 0 Monate - also 0,5 Monate - Jahre werden nicht berücksichtigt.
Du hast das kontrolliert? Der Februar hat 28 Tage:D

Ohne Bedingungen (Schaltjahrproblem) wirst Du wohl nicht auskommen egal wie.
Grüße

JueDan
 
Hi LeoLinux,

Davon ausgegangen, dass jeder Monat 30 Tage hat. Wie bei der Zinsrechnung bei der Bank.

LG

Ah, ok, hatte ich übersehen.

Diese Formel sollte funktionieren:
1/30*((m2-m1)*30 + (t2 - t1)) = delta t

datum1 = (m1, t1) und datum2 = (m2, t2), wobei datum2 > datum1

JueDan
 
Danke für deine Antwort. Leider haut deine Formel laut meis Tests nicht ganz hin. Kannst ja selbst kurz testen:

Datum1: 15.01.2010 bis Datum2: 20.02.2010
Hier müssten wir ~1,67 Monate herausbekommen. Mit deinem Vorschlag werden es leider nur ~0,83

LG
 
Danke für deine Antwort. Leider haut deine Formel laut meis Tests nicht ganz hin. Kannst ja selbst kurz testen:

Datum1: 15.01.2010 bis Datum2: 20.02.2010
Hier müssten wir ~1,67 Monate herausbekommen. Mit deinem Vorschlag werden es leider nur ~0,83

LG

Ich komme auf 1,167, was auch stimmt, da es 35 Tage bzw. 35/30 Monate Differenz sind.
 
Alles klar, ich habe jetzt die universale Lösung:

(30 * MonatEnde + TagEnde) - (30 * MonatAnfang + TagAnfang) * (1/30) = [Dauer in Monaten]


Dennoch, danke für deine Mühen


LG
 
Lol, aber nur wenn man Punkt-vor-Strich außer Acht lässt :P

Umgeformt kommt genau die gleiche Formel raus wie juedans..
 
Back
Top