Tagesdifferenz berechnen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hi


    Jaja, wie immer meine kleinen Problemchen mit Mathe^^


    Unzwar geht es diesmal darum, die Tagesdifferenz von 2 Daten zu berechnen.
    Ich habe 6 Variablen.
    Tag1, Monat1, Jahr1
    Tag2, Monat2, Jahr2


    Diese beiden Daten sollen miteinnander verrechnet werden, sodass ich die Differenz in Tagen habe.
    Beispiel:


    19.9.2011
    24.9.2011
    ------------
    5 Tage


    Sollte jetzt eigendlich klar sein? :)


    Hab schon in Google gesucht, aber keine Rechnung gefunden.
    Würde mich sehr über eine hilfreiche Antwort freuen.


    MFG, Robdeflop®

  • new tag1=1, monat1=9, jahr1=2011;
    new tag2=24, monat2=8, jahr2=2012;
    new days;
    loop_start:
    if(tag1 != tag2 || monat1 != monat2 || jahr1 != jahr2)
    {
    days++;
    tag1++;
    if(tag1>28 && monat1 == 2)
    {
    tag1=1;
    monat1++;
    }
    if(tag1>30 && (monat1 == 4 || monat1 == 6 || monat1 == 9 || monat1 == 11))
    {
    tag1=1;
    monat1++;
    }
    if(tag1>31 && (monat1 == 1 || monat1 == 3 || monat1 == 5 || monat1 == 7 || monat1 == 8 || monat1 == 10 || monat1 == 12))
    {
    tag1=1;
    monat1++;
    }
    if(monat1>12)
    {
    tag1=1;
    monat1=1;
    jahr1++;
    }
    goto loop_start;
    }
    printf("Abstand: %i Tage",days);
    Hab mir mal ein bisschen überlegt wie man das umsetzen könnte, und bin zu dem Schluss gekommen, dass es so wohl am einfachsten wäre. Allerdings sind da keine Schaltjahre eingetragen, aber ich denke bei solch großen Zahlen über Schaltjahre usw. kommt es auf 1 Tag auch nicht mehr an?
    Ich hoffe, dass zumindest der Ansatz weiterhilft - Du kannst es natürlich auch mit einer While-Schleife machen, ich wollte da nur 'nen Loop ausprobieren.


    Bei meinen Daten stimmt das Ergebnis nicht ganz, es gibt 357 Tage an, obwohl es 358 Tage sind. Das liegt aber eben daran, dass 2012 ein Schaltjahr ist, und der Februar daher 29 Tage hat - Aber das finde ich wie gesagt eigentlich nicht weiter schlimm.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    2 Mal editiert, zuletzt von Padarom () aus folgendem Grund: Code optimiert

  • Hi


    Habs mit bissl Hilfe ausm Inet nun auch hinbekommen^^
    Allerdings ist meine Funktion etwas ausführlicher. Und es wird noch abgefragt, ob das Vorherige Datum über dem neuem liegt. (Bei Eingabefehlern...)
    Aber trotzdem vielen dank, werde vielleicht auch deine Funktion verwenden, ist kürzer :P


    Gott sei Dank, endlich ne Lösung für den Kram :thumbup: Bin für solche Rechnungen nit zu gebrauchen^^


    MFG, Robdeflop®

  • Jau kein Problem, das was ich in die nützlichen Codeschnipsel geschrieben habe, überprüft auch, ob das 2. Datum hinter dem 1. liegt und gibt ansonsten -1 zurück.
    Anfangs habe ich versucht das Ganze mit if-Abfragen zu lösen, dann tag2 minus tag 1 zu rechnen, zu überprüfen ob Monat höher ist, ... - Dann bin ich durch Zufall auf so eine Schleifenidee gestoßen und habe es dann so vollendet ;)


    Mit freundlichen Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger