Mathematische Formel für die Differenz zwischen zwei Daten?

8 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Im Kopf ist das relativ leicht zu berechnen, aber eine kurze, knackige Formel aufzustellen ist schwer, weil die Monate alle eine unterschiedliche Anzahl an Tagen haben und theoretisch dazwischen Schaltjahrtage liegen können.

Das macht es unmöglich, am Ende eine Formel wie 1 = e^(pi*i) zu haben.

Woher ich das weiß:Studium / Ausbildung – Mathematik

c0nstii 
Beitragsersteller
 31.01.2019, 10:56

Wäre es möglich eine Formel aufzustellen, wenn man davon ausgeht, das jeder Monat 30 Tage und somit das Jahr 360 Tage hat? Klar wird es dann etwas ungenau, aber das würde mir vorerst mal reichen.

0
Suboptimierer  31.01.2019, 11:00
@c0nstii

Ja, das wäre einfacher

Dann rechnest du beide Daten in Tage nach dem Zeitpunkt 0 um und subtrahierst:

f(x1,x2) = y(x1) * 360 + m(x1) * 30 + d(x1) - (y(x2) * 360 + m(x2) * 30 + d(x2))

y(x) gibt das Jahr eines Datums
m(x) gibt den Monat eines Datums
d(x) gibt den Tag eines Datums

1
Alzurana  31.01.2019, 11:03
@Suboptimierer

Anzumerken ist, das waere schon unglaublich ungenau. Das koennen Computer mit wenig Problemen sehr viel besser und da dies in ein Programm eingebaut werden soll sollte man nicht solche simplen Loesungen nehmen.

0
Suboptimierer  31.01.2019, 11:16
@Alzurana

Kommt auf den Anwendunsfall an. Banken rechnen zum Beispiel die Zinsen auf 360 Tage per anno.

1

ich glaube, es gibt keine einfache formel, die ganz ohne (kleine) tabelle auskommt, die man sich merken muss. am einfachsten ist es deshalb, es mit excel zu berechnen oder mit einem online-tool. und bestimmt gibt es auch eine app oder einen taschenrechner für das smartphone, der so etwas kann.


eddiepoole  31.01.2019, 11:27

in excel machst du einfach deine zwei daten in zwei felder rein und in ein drittes feld machst du deine subtraktionsformel rein z.b. "=a1-b1" und änderst ggf das format der zelle von "datum" in "zahl".

0
c0nstii 
Beitragsersteller
 31.01.2019, 11:29
@eddiepoole

Ja das habe ich auch schon mehrfach gesehen. Bringt mir nur leider nichts, da ich die Formel für ein Programm benötige. Aber trotzdem danke!

0
eddiepoole  31.01.2019, 11:31
@c0nstii

achso, ich dachte du brauchst das zum kopfrechnen. in welcher sprache programmierst du das?

0
c0nstii 
Beitragsersteller
 31.01.2019, 11:33
@eddiepoole

Javascript, aber eine sehr abgespeckte Version, das heißt die .getTime() Methode oder Date Objekte gibt es leider nicht. Deswegen der komplizierte Umweg.

0
eddiepoole  31.01.2019, 11:36
@c0nstii

hab gesehen, dass du es nicht auf den tag genau brauchst. wie wäre es, wenn du jedem datum eine zahl zuordnest und dann die zalen von einander abziehst? da nimmst du einfach das jahr und multiplizierst mit 365,24 und danach die monate, die du mit 30,5 multiplizierst und dann die tage und addierst diese drei zahlen. mit dem zweiten datum verfährst du genau so.

1
eddiepoole  31.01.2019, 11:39
@eddiepoole

da müsste ein brauchbarer wert rauskommen, soweit kein datum dabei ist, das vor der letzten kalenderreform liegt.

1
c0nstii 
Beitragsersteller
 31.01.2019, 11:40
@eddiepoole

Habs jetzt mit einer ähnlichen Lösung umgesetzt. Sollte vorerst mal reichen. Vielen Dank!

1
c0nstii 
Beitragsersteller
 31.01.2019, 11:41
@eddiepoole

Ja das passt, die Daten gehen eh immer nur maximal 2 Jahre in die Vergangenheit zurück.

1

Gibt es im Grunde nicht, aber mit Excel ist das kein kunststück.

Ausgehend von jeweils einem Datum1 und Datum2 in der Form TT.MM.JJJJ (z.B. 01.11.2021) wird für jedes Datum ein Faktor berechnet. Zieht man die Faktoren1 und Faktor2 voneinander ab (Differenz), so erhält man die Tagesdifferenz zwischen Datum1 und Datum2.

Die Faktoren werden jeweils wie folgt berechnet:

Für die Monate Januar und Februar eines Jahres, also wenn das Datum im Januar oder Februar liegt:

FAKTOR = 365(JJJJ) + TT + 31(MM - 1) + INT[(JJJJ - 1 ) / 4] - INT (3/4 [INT[((JJJJ - 1) / 100) + 1])

Für die Monate März bis Dezember gilt dagegen diese Berechnung:

FAKTOR = 365(JJJJ) + TT + 31(MM - 1) - INT(0,4 * MM +2,3 ) + INT (JJJJ / 4) -
INT (3/4 [ INT (JJJJ / 100) + 1 ])

Man kann mittels eines Faktors auch den Wochentag des Datums bestimmen:

Wochentag = FAKTOR + [INT(- FAKTOR / 7) * 7]

Der Wochentag wird dann durch eine Ziffer 0 bis 6 für Samstag bis Freitag ausgedrückt.

P.s. INT bedeutet in den Formeln, daß nur derganzzahlige Teil des Ausdrucks verwendet wird.

Das Ganze ist aus dem TI59 (texas Instruments) Handbuch zum Standard Software Modul (Modul 20) Seite 74ff.

Woher ich das weiß:Recherche

Da im Oktober die Zeit um 1 Stunde zurückgestellt wurde, kann die Differenz nicht exakt 215 Tage sein.


c0nstii 
Beitragsersteller
 31.01.2019, 10:46

Ungefähr würde mir eigentlich auch reichen, muss nicht auf den Tag genau sein.

0
Tannibi  31.01.2019, 10:59

Verstehe ich nicht. Wieso hat die Uhrzeit
da einen Einfluss? Das Problem sind allein die
Schaltjahre und die unterschiedlichen Tage pro Monat.

1
ZaoDaDong  31.01.2019, 11:10
@Tannibi

Ganz einfach, wenn die Uhr eine Stunde zurückgestellt wurde, dann hat dieser "Tag" 25 Stunden.

Wenn man also einen Tag so definiert, dass 24 Stunden ein Tag bedeuten, dann ist die reine Differenz in diesem Zeitraum also höher.

0
Tannibi  31.01.2019, 11:10
@ZaoDaDong

So wird er hier aber nicht definiert. Es geht nur um Tage.

0
ZaoDaDong  31.01.2019, 11:12
@Tannibi

Hier war von einer mathematischen Definition die Rede. Da habe ich mal angenommen, dass die tatsächlich vergangene Zeit zwischen 2 Zeitpunkten erfragt war.

0
ZaoDaDong  31.01.2019, 11:29
@Tannibi

Das nutzt ja nun nichts mehr, weil ich die Antwort bereits 3 Minuten nach der Fragestellung abgeschickt habe.

0