Zeit Berechnen - Fehler?

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
  • Guten Tag zusammen,


    ich habe leider ein paar Fehler bei meiner Zeit Berechnung, und deshalb ist es z.B. immer bei 0 Uhr, der Tag ist immer "0" (Montag)



    if(minute <= 59)minute++;
    else{
    minute = 0;
    stunde ++;
    }
    if(stunde == 23 && minute == 59)stunde ++;
    else{
    stunde = 0;
    }
    if(tag <= 6 && stunde == 0 && minute == 0)tag ++;
    else{
    tag = 0;
    }


    Kann jemand helfen? Weiß selber grade nicht, wo der Fehler liegen könnte. :/ (PS: Ist in einem "1 Sekunden Timer" gepackt)

  • Das ist nur ein Timer, da steht nichts anderes drin.



    public OnServerTimer()
    {
    if(minute <= 59)minute++;
    else{
    minute = 0;
    stunde ++;
    }
    if(stunde == 23 && minute == 59)stunde ++;
    else{
    stunde = 0;
    }
    if(tag <= 6 && stunde == 0 && minute == 0)tag ++;
    else{
    tag = 0;
    }
    return 1;
    }

  • Mmn sind da mehrere Fehler drin und die zu beschreiben wäre mir jetzt zu viel Aufwand.
    Fängt schon damit an,dass du "<= 59" machst.
    Es gibt keine Minute 60 auf der Uhr. Es ist "58 -59 - 0 - 1 - 2 ...".
    if(stunde == 23 && minute == 59)stunde ++;
    Den Sinn erkenn ich hier auch nicht wirklich. Du wirst bei 23:59 die "stunde" doppelt zählen.

    Spoiler anzeigen
    Da sind bestimmt noch n paar weitere


    Ich würde dir empfehlen, nur die Sekunden oder in deinem Fall "minuten" zu zählen. Alle anderen Zahlen kann man daraus ableiten wie "stunde" oder "tag". Es gibt ja zum Glück die
    Möglichkeit den Rest einer Rechnung zu erhalten ( % ).



    http://forum.sa-mp.de/gta-mult…zeiteinheiten/#post768251
    stock ConvertSecEx(secs,&sec,&min,&hour,&day) {
    new
    rest;
    sec = 0;
    min = 0;
    hour = 0;
    day = 0;
    day = (secs / (60*60*24));
    rest = (secs % (60*60*24));
    hour = (rest / (60*60));
    rest = (rest % (60*60));
    min = (rest / 60);
    sec = (rest % 60);
    return 1;
    }
    Die Variablennamen sind jetzt natürlich nicht gleichbedeutend mit deinen. Vom Prinzip ist es so gemeint.


    //Edit:
    Die Funktion sollte sogar klappen. Du könntest einfach als Wert für "secs" folgendes angeben: minute * 60
    Für den Wochentag nur noch den Rest von day durch 7.


    //Edit2:
    Damit du es nicht falsch verstehst:
    Jede Sekunde "minute" um 1 erhöhen dann sollte es mit "minute*60" als Wert für "secs" klappen.

    Einmal editiert, zuletzt von Goldkiller ()